2010-08-17 23 views
0

我想知道是否可以創建執行特定返回類型的Annotation我想知道是否可以創建一個強制執行特定返回類型的Java註釋?

我想是創建一個Annotation,並用它喜歡的方式:

@MarkerAnnotationForcingStringReturnType 
public String someWebflowMethod(...){ 
    ... 
    return "someString"; 
} 

然後我可以有我想要的任何方法名稱,但它必須返回,一個String,例如。

+0

我可以看到你要求的唯一目的是禁止字符串的子類(在這種情況下是不可能的,因爲字符串是最終的,唯一可以返回的是字符串或null)嗯,如果你試圖消除Null作爲一個可能的返回值,這實際上是非常有效的 - 我相信@nonull或類似的東西將在Java 7(?) – 2010-08-17 17:18:03

+0

中可用我認爲有關返回_type_你不需要註釋返回類型已經是String。然而,如果你想確保字符串有一個特殊的格式和/或不是null,你可以創建一個Annotation,但是你需要圍繞它來構建一個框架,因爲這通常是一個運行時間的事情。 – 2010-08-17 17:33:34

回答

0

註解本身就是元數據 - 也就是說,「註釋」附加到代碼位幷包含在字節碼本身(可能)中。

你可以使用apt編寫一個處理器,如果你真的想在編譯時驗證它。

但是我發現聲明一個方法返回String就像一個典型的Java開發人員一樣強大和容易理解。你真的有這個理由嗎?如果您擔心有人可能會更改退貨類型,他們可能會輕鬆刪除您的註釋。如果您想阻止某人進行這些更改,則可以認爲更多比他們可能爲「多餘」而刪除的註釋有效(嘿,我們正在討論您期望在此處使基本要求無效的開發人員通過無能/缺乏意識......)。

7

方法簽名本身不執行特定的返回類型嗎?

4

您可以創建自己的註釋,然後編寫自己的annotation processor,這可以強制執行它。

我不知道一個內置的...坦率地說,我不知道我看到了這一點。如果你要保持足夠的警惕來編寫註釋,爲什麼你不夠警惕,不能使方法返回類型?在什麼情況下你會得到註解的權利,但方法錯了?

相關問題