0
下面的代碼與Eclipse編譯:使用註釋(org.eclipse.jdt.annotation.Nullable)的使用Eclipse編譯,而不是用javac
@Retention(RetentionPolicy.CLASS)
@Target({ TYPE_USE })
public @interface Nullable {
// This is org.eclipse.jdt.annotation.Nullable
}
class SomeClass {
private final [email protected] Inner b;
}
,但它不會與甲骨文的javac(版本1.8。 0_141),即產生以下錯誤:
SomeClass.java: error: annotation type not applicable to this kind of declaration
我打賭的javac和Eclipse的編譯器上TYPE_USE的處理有所不同,但我無法找到一個解決辦法,以保持註釋在我的代碼(應該編譯在Eclipse和javac中)。有關此事的任何線索?
'@Nullable SomeOtherClass.Inner b'是否相同且可編譯?這是一個奇怪的結構,我從未見過。 – Seelenvirtuose
'@Nullable SomeOtherClass.Inner b'不能編譯(使用Eclipse Luna),出現以下錯誤:'類型註釋不允許用於訪問靜態成員的類型名稱。如果我沒有記錯,過去曾經有過編譯的過程,但在更新Eclipse時(我們開發Eclipse插件),我們不得不切換到奇怪的語法。 –
您的代碼不會編譯,因爲它缺少import語句,'SomeOtherClass'聲明等。請提供一個MWE,最好不依賴於Eclipse庫。當我擴展您的代碼以添加缺少的部分時,它會使用'javac 1.8.0_131'爲我編譯,但是您的代碼或環境可能存在一些差異。 – mernst