2011-11-10 1 views
2

リフレクションを使ってクラスコメントを得ることは可能ですか?私は.javaファイルを読んでコメントを得ることができますが、その可能性は1つではないかもしれません。そのため、/ **の最初のインスタンスを探すと*/iはメソッドコメントで終わる可能性があります。あなたはプログラムでクラスコメントを得ることができます

コード解決策を避けることができますか?

+0

あなたの目標は何ですか?コメントは生成されたコードの一部ではないため、実行時には利用できません。 Javadocドックレットが何らかの形であなたを助けることができるかどうかを知りたいかもしれません。 –

答えて

6

コメントはクラスファイルに保持されていません。コメントを取得するには元のソースに戻る必要があります。

実行時に必要な情報がある場合は、アノテーションに格納する必要があります。これは実行時にアクセスできます。

+2

http://download.oracle.com/javase/tutorial/java/javaOO/annotations.htmlを参照し、注釈を使用するソフトウェアの例としてhttp://static.springsource.org/spring/docs/2.5.6/を参照してください。 reference/metadata.html – VolkerK

2

これはできません。コメントはコンパイルされたコードから削除されます。

+1

他の言い方をすると、コメントはコンパイラによって無視されます。 –

+0

私は.javaファイルにアクセスするとどうなるでしょう – Biscuit128

+0

@PeterLawrey注釈処理中にアクセス可能であるため、コンパイラによって実際に無視されるとは思いませんが、実際のコードを出力するのには使用されていません。 –

2

私が知っている限り、これを反映させる方法はありません。私は解説/ JavaDocがコンパイル後に実際のクラスファイルに引き継がれることは疑う。これを行う1つの方法は、注釈プロセッサの使用です。注釈処理はリフレクションを使用せず、むしろソースモデル/ミラーのコンパイル時に相当します。クラス宣言やメソッドのようなプログラム要素のドキュメントを手に入れることができます。これを実行時に使用するためにメタデータファイルに入れておくことができます。

2

私はあなたがリフレクションによってコメントを得ることができないと思います。なぜなら、コンパイラはコメントを切り捨てるので、それらは.classにはありません。 例では、Eclipseはjavadocのヘルプを提供します。

2

本当に本当にやりたければ、ソースファイルを解析してコメントを抽出する(外部の)アプリケーションを書くことができます。その後、regexと入力すると、興味のあるコメント(たとえば、「class」というキーワードのすぐ上にあるものなど)だけを取ることができます。

しかし、私に尋ねるのはなぜですか?その情報にアクセスする必要が本当に必要な場合は、コメント以外のものにプロモートする必要があることを意味します。アプリケーションのどこかの文字定数や、クラス/メソッドのアノテーションのように、コンパイラによって、通常の方法を使用してアクセスすることができます。ソース.javaファイルからの読み込み、既に他の人が言及したものを除き

0

ない反映したものである。反射がコンパイルされたコード、.classファイルを操作します。

+0

真のJavaソースの読み取りは、通常のファイル処理です。 – Guillaume

関連する問題