0

我想通過在註解處理器中獲取註釋來從其上存在特定註釋的類獲取有關字段的信息。實例化帶有註釋的批註

我可以從註釋中檢索完全限定的類名,但不能實例化它,正在拋出ClassNotFoundException,雖然類在那裏。

如何檢查類是否不在類路徑中或哪些類路徑包含在註釋處理器中?

try { 
       Class<?> clazz = Class.forName(((TypeElement) e).getQualifiedName().toString()); 
      } catch (ClassNotFoundException cnfe) { 
       cnfe.printStackTrace(); 
      } 
+0

路徑是什麼呢'的toString()'回報? – solomkinmv

+0

它在我的Android應用程序中返回一個類的類路徑。 – mallaudin

回答

1

你試圖在問題的代碼做什麼是不可能的,因爲程序是完全編譯之前發生的註釋處理。這就是爲什麼你使用例如TypeElement對象而不是Class,因爲該類尚未編譯。

在另一方面,如果你只是要檢查什麼類型的字段都存在,you can use the Element API for that,例如:

for (Element e : typeElement.getEnclosedElements()) { 
    if (e.getKind() == ElementKind.FIELD) { 
     VariableElement field = (VariableElement) e; 
     // 
    } 
}