[解決済み] リフレクションにより、あるクラスのフィールドから別のクラスへすべての値をコピーする
2023-07-05 15:56:15
質問
基本的に他のクラスのコピーであるクラスがあります。
public class A {
int a;
String b;
}
public class CopyA {
int a;
String b;
}
私がやっていることは、クラス
A
の値を
CopyA
を送信する前に
CopyA
をウェブサービス呼び出しを通して送信します。さて、私は基本的にクラス
A
からクラス
CopyA
.
どうすればいいのでしょうか?
これは私が今のところ持っているものですが、なかなかうまくいきません。この問題は、私がループしているフィールドにフィールドを設定しようとしていることだと思います。
private <T extends Object, Y extends Object> void copyFields(T from, Y too) {
Class<? extends Object> fromClass = from.getClass();
Field[] fromFields = fromClass.getDeclaredFields();
Class<? extends Object> tooClass = too.getClass();
Field[] tooFields = tooClass.getDeclaredFields();
if (fromFields != null && tooFields != null) {
for (Field tooF : tooFields) {
logger.debug("toofield name #0 and type #1", tooF.getName(), tooF.getType().toString());
try {
// Check if that fields exists in the other method
Field fromF = fromClass.getDeclaredField(tooF.getName());
if (fromF.getType().equals(tooF.getType())) {
tooF.set(tooF, fromF);
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
きっとどこかでやっている人がいるはずです。
どのように解決するのですか?
サードパーティのライブラリを使っても構わない場合。
BeanUtils
を使えば、非常に簡単にこれを処理できます。
copyProperties(Object, Object)
.
関連
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。
-
Zipファイルの圧縮・解凍にantを使用する
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み】Androidで、あるアクティビティから別のアクティビティにオブジェクトを渡す方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
javaの非静的メソッドを静的に参照することができない
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
java send https request prompt java.security.cert.について。
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
[解決済み] Javaでオブジェクトをコピーするにはどうしたらいいですか?
-
[解決済み] javaのオブジェクトからオブジェクトへのマッピングのためのツールは?[クローズド]
-
[解決済み】JavaリフレクションのgetFieldsとgetDeclaredFieldsの違いは何ですか?