的我們有這個類:表示內源保留註釋
public class MyClass {
@Retention(RetentionPolicy.SOURCE)
private @interface MyInterface { }
@MyInterface
public void hello() { }
}
正如你所看到的,它有一個內部的唯一來源的註釋。我的問題是:導出的二進制文件(jar)是否包含MyClass$MyInterface.class
文件?如果我們看保留,我們可以說不,因爲這個註釋應該被編譯器丟棄。但是它仍然被添加到MyClass.class
的內部類的列表中,並且MyClass$MyInterface.class
文件也被創建。
如果我們call
myClass.getEnclosedElements()
和MyClass$MyInterface.class
不存在當我們對這種類
public class MyProcessedClass extends MyClass {}
運行註釋處理器註釋處理失敗。如果存在MyClass$MyInterface.class
,則處理正常。
在'myClass.getEnclosedElements()'中,什麼是'myClass'?表示「MyClass」或「MyProcessedClass」的'TypeElement'? – Radiodef
這應該是MyClass。 – WonderCsabo