簡體   English   中英

如何創建處理局部變量的注釋處理器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM