gpt4 book ai didi

java - 注释上的自定义 Eclipse 警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:38 26 4
gpt4 key购买 nike

假设我有一个内部方法,应该只在某些情况下使用。

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

像这样:

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

然后,Eclipse 中的警告:

enter image description here

你明白了。

有希望吗?

最佳答案

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 中,您可以通过右键单击您的项目,然后选择 Properties -> Java Compiler -> Annotation 在 Java Compiler 中注册注释处理器Processing -> Factory Path 并添加包含自定义注释处理器的 Jar。 Here是一篇解释细节的有趣帖子。

或者,您可以将所有“内部”方法 API 放入专用类中,并为该类添加访问规则在您的 Eclipse 构建路径中,以便您的项目中依赖于此类的任何代码都会显示警告。

关于java - 注释上的自定义 Eclipse 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24979971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com