[英]How can I create an annotation processor that processes a Local Variable?
我正在嘗試為局部變量創建注釋。 我知道我不能在生成的字節碼中保留注釋,但我應該能夠在編譯時通過執行以下操作來訪問信息:
@Target({ElementType.LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface Junk {
String value();
}
只有,當我在下面指定了支持類型中具有“垃圾”的ProcessorFactory時,這不會被apt或javac處理:
class JunkTester {
public static void main(String[] args) {
@Junk String tmp = "Hello World";
System.out.println(tmp);
}
}
然而,當我在public static
之前移動@Junk注釋時,它將起作用
思考和/或解決方法?
做了一些快速測試並進行了一些搜索,看起來好像沒有真正支持LOCAL_VARIABLE
......但是:
http://forums.sun.com/thread.jspa?threadID=775449
http://www.cs.rice.edu/~mgricken/research/laptjavac/
https://checkerframework.org/jsr308/
可能完全錯了,但這就是它的樣子......
看來, 類型注釋規范(JSR 308)有望在未來解決這個問題( JDK 8 ?)。
從Java 8開始,局部變量注釋存儲在類文件中。
標准Java注釋處理器不處理方法體。 但是, Checker Framework允許您編寫一個注釋處理器來處理每個注釋,包括局部變量。 它的注釋處理器甚至可以檢查程序的每個語句,無論是否注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.