我们说我有一个内部方法,只能在某些情况下使用。
在Eclipse中,是否有可能将其标记为内部并在用于阻止我或将使用我的API的人误用而不知道他们正在做什么时显示警告。我无法改变其可见性,因为它也可能在其他包/非扩展类中使用。
这样的事情:
@Internal
public void doSomeInternalStuff()
{
// ...
}
然后,在Eclipse中发出警告:
你明白了。
有什么希望吗?
答案 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