私は Java にオブジェクトを持っています。このオブジェクトには私にとって有用な情報が含まれていることはわかっています。問題は、フィールドの名前がわからないことです。このオブジェクトに実際のデータが含まれているのか、単に参照が含まれているのかわかりません。このオブジェクトのラベルしか知らないという事実、このデータ構造をデバッグして情報を取得するために必要なオプションは何ですか?
特定のタイプに対応するすべてのオブジェクトをリストすることは可能ですか?
私は Java にオブジェクトを持っています。このオブジェクトには私にとって有用な情報が含まれていることはわかっています。問題は、フィールドの名前がわからないことです。このオブジェクトに実際のデータが含まれているのか、単に参照が含まれているのかわかりません。このオブジェクトのラベルしか知らないという事実、このデータ構造をデバッグして情報を取得するために必要なオプションは何ですか?
特定のタイプに対応するすべてのオブジェクトをリストすることは可能ですか?
クラスのフィールドを印刷(および検索)するには:
static Object fieldOdClass(final String className,
final String valeurRecherche1) {
try {
final Field[] f = Class.forName(className).getFields();
for (int i = f.length - 1; i >= 0; i--) {
System.out.println(f[i].toString());
if (f[i].toString().endsWith(valeurRecherche1)) {
return f[i].toString();
}
}
} catch (final ClassNotFoundException e) {
// manage errors;
}
}
この問題を解決する最善の方法は、このオブジェクトをデバッグ モードにして、ウォッチ ビューでオブジェクト フィールドとその値を簡単に検出できるようにすることです。しかし、デバッグで実行するオプションがない場合、これは扱いにくくなります。私が提案する他の方法は、toString()
リフレクションを使用してすべてを再帰的に出力する汎用ロジックでメソッドをオーバーライドすることです。JSON/XML シリアライゼーション ライブラリを使用してボイラープレート コードを実装することなく、同じことを実現できます。残りは、その場で機能させることです。
ソース ファイルを開き、アウトライン ビューを確認します。
パースペクティブに表示されていない場合は、 [ウィンドウ] > [ビューの表示] > [アウトライン] に移動します。
これにより、オブジェクトが提供するデータ/メソッドの概要がよくわかるはずです。
Debug in Eclipse を使用して、実行時にオブジェクトのすべての属性を表示できます。これは非常に便利で、コードを作成する必要はありません。オブジェクトが読み取られる行にブレークポイントを配置するだけです。また、アプリケーションがデバッグ モードで実行されていて、オブジェクトが読み取られている行が強調表示されている場合は、CTRL + SHIFT + I を押して詳細情報を表示できます。