2016-11-03 9 views
10

私はannotationprocessorを使ってゼロからクラスを生成できますが、lombokのようなクラスは変更できませんでした。私はアンドロイドスタジオでロンボクで生成されたクラスを検索しましたが、何も見つかりませんでした。その後、私は自分のウェブサイトでロンボクの概要をチェックし、フォーラムでも調査しましたが、何もせずに終わりに達しました。私の質問は実際にはとても単純です。たとえば、@ Setterを使用しているときに、lombokが生成されたコードを鉱山と統合する方法。どのように私はプロセッサを開発することができますか?Lombokは既存のクラスにコードを生成する方法は?

答えて

4

How does lombok work?と重複しているようですが、私はデュープとしてクローズするつもりですが、あなたの賞金はそれを防止しています。

要するに、ロンボクは実際にコードを生成しません。代わりに、ソースコードを読み込んでコンパイルされたバイトコードを出力する間に、プログラムの抽象構文木を直接変更するために、未定義で未定義の内部コンパイラ実装api呼び出しを使用します。新しいコンパイラバージョンへの更新時に警告や通知なしで中断する可能性がありますが、現在のところ他の方法はありません。

+2

また、「どのように?」などのプロセッサを開発することができますか?最も簡単な方法は、カスタムロンボクの注釈を書くことです。例えば、 https://binkley.blogspot.co.uk/2014/12/writing-your-own-lombok-annotation.html – Rich

-1

ロンボクはコンパイル段階でコードを生成しています。ここにはhttp://hannesdorfmann.com/annotation-processing/annotationprocessing101のチュートリアルがあります。

あなた自身のアノテーションを宣言するのが初めての方は、ランタイムアノテーションを使い始めることを強くおすすめします。それらは理解しやすく、デバッグしやすく、ランタイムフェーズではすでに慣れ親しんだコードが「動作」します。そのための短いチュートリアル:http://docs.oracle.com/javase/1.5.0/docs/guide/language/annotations.html

関連する問題