2011-06-30 7 views
2

データ型、サイズ、値などの他の情報とともに、指定されたクラスのメンバ変数のリストを取得したいと思います。これは、Reflectionクラスを使用して可能です。しかし、この情報を得るためにReflectionクラス以外の方法はありますか? ありがとうございます。javaのクラスのフィールドのリストを取得するには?

答えて

1

私が知っている唯一の他の方法は、Spoonのようなツールを使ってソースコード分析を行うことです。

1

はいintrospectionはorg.springframework.util.ReflectionUtilsクラスは、実際にこれらのケースではかなりヘルパーですReflection

+0

私はこれを私のブラックベリーアプリで使用したいと思います。私はJava beansを使用していません。これは10個のメンバ変数を持つ単なるクラスであり、そのすべてのオブジェクトに対してメンバ情報とメンバ変数を取得したい。そのクラスのメンバーの将来は変化する可能性があります。私はこれをやりたい3つのクラスがあります。 – gauri

+0

次に、「Reflection」の問題は何ですか? –

+0

ブラックベリーにリフレクションクラスがなく、アンドロイドでも同じコードを使用したいです – gauri

0

から離れて、あなたを助けるかもしれません。

1

クラスのフィールドclassで提供されているメソッドを使用してください。オブジェクトClassを参照してください。

1
  1. 反射が、これは実際に
  2. が生成されたコンパイラを使用して、ソースコードを解析することを行うための最も簡単な方法ですが、それはもう少し複雑だ(ANTLRプロジェクトは、Javaの文法ファイルを持っている)となりますプロジェクトに追加の依存関係が必要です。これは、ソースコード
  3. を読み込み、それを解析する際に最も複雑な場合にのみ適しています。バイナリファイルを読み込むためにJavaバイトコードパーサーを作成する必要があります。しかし、これは最速の方法(LALR-k解析を追加することなく、リフレクションのようなオーバーヘッドがない)で、何を読むべきか、どのように読み込むか、コンパイルされたJavaコードで動作するかを制御できます。

なぜ反射があなたに適していないと思いますか? 以前のJavaリリースと比較して、Java 1.5のほうがはるかに高速でした。

+0

クラス情報が必要です。私はアンドロイドとブラックベリーのアプリで使用する予定のカスタマイズされたオブジェクトのシリアル化を行う。しかし、ブラックベリーはjava.lang.reflectパッケージをサポートしていないので、フィールド情報を取得できません。私はこれをどのように達成すべきですか? – gauri