假設我有一個內部方法,它只能在某些情況下使用。註釋上的自定義Eclipse警告
是否有可能,在Eclipse中使用時,爲防止我或誰將會使用我的API人錯誤地使用它,不知道他們在做什麼,就表示內部並顯示警告。我無法改變其可見性,因爲它也可能用於其他軟件包/非擴展類。
事情是這樣的:
@Internal
public void doSomeInternalStuff()
{
// ...
}
,然後在Eclipse的一個警告:
你明白了吧。
有沒有希望?
假設我有一個內部方法,它只能在某些情況下使用。註釋上的自定義Eclipse警告
是否有可能,在Eclipse中使用時,爲防止我或誰將會使用我的API人錯誤地使用它,不知道他們在做什麼,就表示內部並顯示警告。我無法改變其可見性,因爲它也可能用於其他軟件包/非擴展類。
事情是這樣的:
@Internal
public void doSomeInternalStuff()
{
// ...
}
,然後在Eclipse的一個警告:
你明白了吧。
有沒有希望?
閱讀有關的內部方法詮釋赫伯特·希的書「的Java:beginers指南」 這裏的鏈接:http://www.amazon.com/Java-Beginners-Guide-5th-Edition/dp/0071606327
JSR269(可插拔標註處理API)允許您編寫自定義註解處理器,可以處理定製標註並使您能夠使用javax.annotation.processing.Messager
打印錯誤或警告。 下面是一個例子。
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import javax.tools.Diagnostic;
@SupportedAnnotationTypes("fully.qualified.name.of.InternalAnnotationType")
@SupportedSourceVersion(SourceVersion.RELEASE_6)
public class CustomAnnotationProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
for (Element element : roundEnv.getElementsAnnotatedWith(InternalAnnotationType.class)) {
InternalAnnotationType internalAnnotation = element.getAnnotation(InternalAnnotationType.class);
String message = "The method " + element.getSimpleName()
+ " is marked internal and its use is discouraged";
processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING, message);
}
return true;
}
}
在Eclipse中,您可以在Java編譯器通過右鍵點擊你的項目註冊的註解處理器,然後選擇屬性 - >Java編譯器 - >註解處理 - >廠路徑並添加包含您的自定義註釋處理器的Jar。 Here是一個有趣的帖子,解釋了細節。
或者,你可以把你所有的「內部」方法API的專用類中,並添加訪問規則在你的Eclipse構建路徑類,所以,在你的項目中的任何代碼,取決於這個類會顯示一個警告。
這就是我正在尋找的 - thx! –