注释上的自定义Eclipse警告

时间:2014-07-27 10:19:44

标签: java eclipse annotations

我们说我有一个内部方法,只能在某些情况下使用。

在Eclipse中,是否有可能将其标记为内部并在用于阻止我或将使用我的API的人误用而不知道他们正在做什么时显示警告。我无法改变其可见性,因为它也可能在其他包/非扩展类中使用。

这样的事情:

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

然后,在Eclipse中发出警告:

enter image description here

你明白了。

有什么希望吗?

2 个答案:

答案 0 :(得分:10)

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中,您可以通过右键单击项目,然后选择属性 - &gt;在Java编译器中注册注释处理器。 Java编译器 - &gt; 注释处理 - &gt; 工厂路径并添加包含自定义注释处理器的Jar。 Here是一篇有趣的文章,解释了细节。

或者,你可以把你所有的&#34;内部&#34;在专用类中使用方法API,并在Eclipse构建路径中为该类添加 访问规则 ,以便项目中依赖于此类的任何代码都会显示警告。

答案 1 :(得分:-3)

阅读Herbert Schildt的书“Java:初学者指南”中的内部方法 这是链接:http://www.amazon.com/Java-Beginners-Guide-5th-Edition/dp/0071606327