2016-03-04 55 views
3

我正在編寫需要訪問只存在於匿名類中的元素的註釋處理器。具體而言,訪問枚舉匿名類中的方法。使用註釋處理在匿名類中檢索元素

enum Foo { 
    BAR { 
     @MyAnnotation 
     void doSomething() { [...] } 
    }; 

    @MyAnnotation 
    void doSomethingElse() { [...] } 
} 

當調用註釋過程中roundEnv.getElementsAnnotatedWith(MyAnnotation.class)我沒有得到代表doSomething方法的元素。然而,我確實得到了代表doSomethingElse方法的元素,所以它似乎是匿名類專用的。我已經觀察到字段註釋以及匿名枚舉類中的相同。

我錯過了什麼?這種處理只是不受支持?

回答

3

不,這不支持。

在Java中,只有信息編譯器必須告訴它在對象上有哪些方法可用是該對象的編譯時類型。如果一種方法在已知類型的對象上不可用,那麼就編譯器而言,它是不可用的。