2012-03-22 10 views
3

反射またはハッシュマップ?オブジェクトが横たわっていて、ユーザーがそれらをクリックする可能性があるグラフィカルアプリケーションを書いているとします。つまり、クリックしたオブジェクト情報をどういう形で表示したいのですか?java - オブジェクトのプロパティを表示する最適な方法

AccessibleアクセシビリティのJavaパッケージとAccessibleContextクラスのインターフェイスを読み終えます。その前に、クラスフィールドの代わりにプロパティのハッシュマップを使用してテストコードを書きました。最後に、ReflectionでJavaBeansがinstrospectionを使用していることを読んだ後で考えました。

あなたはそのようなアプリケーションで何をお勧めしますか?

+0

私はそれを受け入れるようにしますが、必要性のミスがありました(おそらく私のスペルでした)。 InstrospectionまたはReflectionは、オブジェクトがまだインスタンス化されていないときにオブジェクトについて何かを知る必要がある場合に適しています。しかし、あなたがオブジェクトを実行しているときに、そのオブジェクトを知っているなら、恐らくそれらのメソッドを代わりに呼び出すのが最も良いでしょう。これらの呼び出しで、 "プロパティテーブル"を構築​​することができます。とにかく、私の答えはCommons BeanUtilsを掘り下げるのに役立ちました。よろしく。 – Sebastian

答えて

4

反射とイントロスペクションの使用は、HashMapsを使用するよりも優れたアプローチです。このAPIを直接使用する代わりに、Commons BeanUtilsのような抽象レイヤーをお勧めします。これにより、JavaBean標準に準拠したクラスで簡単に作業できます。

ここにUser Guideの例があります。

+0

私はそれです。私はHashMapsについて、主に2つの理由から同じ意見を持っています。コードを難読化し、メモリの使用を増やします。また、Java APIのドキュメントではパッケージインタフェースの実装を主張していますが、 'AccessibleContext'ははるかに具体的なようです。 – Sebastian

+0

まだ何かがありません。ご覧のとおり、私はランタイムプログラムのための 'Reflection'について言及しました。それは、特派員ゲッター/セッターの書き込みを避けるプロパティのリストを表す必要があるからです。それはまた、私はHashMapをその値で反復することを考えたのです。私はユーザーガイドを読んでいましたが、 "グラフィカルに表現したいすべてのプロパティを取得する"という必要性に合った機能は見つかりませんでした。 「すべてのオブジェクトのプロパティを取得する」と同じです。)JavaBeanの仕様に従わないことは知っていますが、プロパティが見つからないのに十分ですが、まだ私のニーズに合っていないようです – Sebastian

+0

より多くの文字が必要なのでネチケットを避けて、 'Reflection'を使用してメソッドを呼び出すための行を無駄にすることは、メソッド自体を呼び出すことと異なるはずです。実行時に実行されていることを覚えておいてください。主な考え方は、表現できるプロパティのセットを取得することです。例えば、' myObject.getProperties () 'オブジェクトによって実装されています(Javaのプロパティの種類)。私はそれを解決する最善の方法を探しています。 – Sebastian

関連する問題