注释上的自定义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! –