データ型、サイズ、値などの他の情報とともに、指定されたクラスのメンバ変数のリストを取得したいと思います。これは、Reflectionクラスを使用して可能です。しかし、この情報を得るためにReflectionクラス以外の方法はありますか? ありがとうございます。javaのクラスのフィールドのリストを取得するには?
答えて
私が知っている唯一の他の方法は、Spoonのようなツールを使ってソースコード分析を行うことです。
はいintrospection
はorg.springframework.util.ReflectionUtilsクラスは、実際にこれらのケースではかなりヘルパーですReflection
から離れて、あなたを助けるかもしれません。
クラスのフィールドclass
で提供されているメソッドを使用してください。オブジェクトClassを参照してください。
Apache commons-langパッケージには、非常に便利なツールReflectionToStringBuilderがあります。ここでのjavadocへのリンクです:http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/builder/ReflectionToStringBuilder.html
- 反射が、これは実際に
- が生成されたコンパイラを使用して、ソースコードを解析することを行うための最も簡単な方法ですが、それはもう少し複雑だ(ANTLRプロジェクトは、Javaの文法ファイルを持っている)となりますプロジェクトに追加の依存関係が必要です。これは、ソースコード
- を読み込み、それを解析する際に最も複雑な場合にのみ適しています。バイナリファイルを読み込むためにJavaバイトコードパーサーを作成する必要があります。しかし、これは最速の方法(LALR-k解析を追加することなく、リフレクションのようなオーバーヘッドがない)で、何を読むべきか、どのように読み込むか、コンパイルされたJavaコードで動作するかを制御できます。
なぜ反射があなたに適していないと思いますか? 以前のJavaリリースと比較して、Java 1.5のほうがはるかに高速でした。
クラス情報が必要です。私はアンドロイドとブラックベリーのアプリで使用する予定のカスタマイズされたオブジェクトのシリアル化を行う。しかし、ブラックベリーはjava.lang.reflectパッケージをサポートしていないので、フィールド情報を取得できません。私はこれをどのように達成すべきですか? – gauri
私はこれを私のブラックベリーアプリで使用したいと思います。私はJava beansを使用していません。これは10個のメンバ変数を持つ単なるクラスであり、そのすべてのオブジェクトに対してメンバ情報とメンバ変数を取得したい。そのクラスのメンバーの将来は変化する可能性があります。私はこれをやりたい3つのクラスがあります。 – gauri
次に、「Reflection」の問題は何ですか? –
ブラックベリーにリフレクションクラスがなく、アンドロイドでも同じコードを使用したいです – gauri