注释上的自定义Eclipse警告

问题描述:

假设我有一个内部方法,它只能在某些情况下使用。注释上的自定义Eclipse警告

是否有可能,在Eclipse中使用时,为防止我或谁将会使用我的API人错误地使用它,不知道他们在做什么,就表示内部并显示警告。我无法改变其可见性,因为它也可能用于其他软件包/非扩展类。

事情是这样的:

@Internal 
public void doSomeInternalStuff() 
{ 
    // ... 
} 

,然后在Eclipse的一个警告:

enter image description here

你明白了吧。

有没有希望?

阅读有关的内部方法诠释赫伯特·希的书“的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构建路径类,所以,在你的项目中的任何代码,取决于这个类会显示一个警告。

+0

这就是我正在寻找的 - thx! –