2013-04-04 21 views
1

有沒有方法可以將處理器添加到編譯器而不進行註釋?在不使用註釋的情況下創建自定義Java編譯器錯誤

基本上,如果用戶沒有正確實現接口(即未實現後置條件),我希望構建失敗。在編譯時,我想檢查一個類是否實現了一個接口,如果有,請運行一些代碼來檢查實現是否正確。

例如,我想確保實現getErrorMoniker()的類在camelCase中返回一個字符串。

public interface MyError { 
    public String getErrorMoniker(); 
} 

public class MyErrorImplemented1 { 
    @Override 
    public String getErrorMoniker() { return "goodErrorMoniker"; } 
} 

public class MyErrorImplemented2 { 
    @Override 
    public String getErrorMoniker() { 
    return "BADERRORMONIKER"; // I would like a compile error here 
    } 
} 

任何意見,將不勝感激。

+2

'return goldbach_conjecture_holds()? 「goodMon」:「BADMON」' – Ingo 2013-04-04 19:28:44

回答

1

@SupportedAnnotationTypes("*")註解的處理器在理論上應該能夠處理所有源文件,因爲它也適用於一組空註釋。從documentation

如果不存在註釋類型,註釋處理仍然發生,但是支持處理僅通用處理器「*」可以聲稱註釋類型的(空)集。

雖然您檢查返回值的目標可能無法正常工作,因爲這會發生在編譯時間,而不是運行時間。

相關問題