0

ソースファイルに含めずに、注釈プロセッサを使用して .class ファイルを生成できますか?

例えば。

Lombakでは、フィールドに @Getter、@Setter を設定するだけです。しかし、ソース ファイルを変更せずにメソッドをクラス ファイルに挿入するにはどうすればよいでしょうか。

彼らがどのようにそれをしたかのようなサンプルを提供できますか?

注釈を使用して新しいファイルを作成する方法の例を得ることができました。しかし、ソース ファイルに何も追加せずに、どのようにコンパイラに通知し、Java ファイルで使用可能な getter メソッドがあることを知らせる必要がありますか。

4

2 に答える 2

1

Lombok が行うことは少しハックであり、注釈処理よりもはるかに複雑です。注釈プロセッサは、単純に構文ツリーのメンバーで呼び出され、新しいファイル (通常は Java ソース ファイル) を生成します。

Lombok のように既存のクラスを変更するのは非常に困難です。これは AST を変換することで機能しますが、これは通常の APT の範囲外のものです。

于 2013-11-20T10:03:12.490 に答える
0

いつでも.class自分でファイルを書き出すことができますが、これらの注釈が通常機能する方法は、注釈プロセッサがソース ファイルを生成してからコンパイルすることです。コンパイラは、パスでソース ファイルが生成されなくなるまでループし続け、その後終了します。

既存のクラスを拡張するには、AspectJ 型間宣言を作成するのが通常の方法です。

于 2013-11-20T04:44:21.230 に答える