[英]How can I make annotations more semantic?
我正在编写一个库,所以我不经常在同一项目的类中使用这些方法。 因此,我的IDE(IntelliJ IDEA)一直警告我方法未使用。
当然,显而易见的解决方案是将@SuppressWarnings("unused")
放在类之前。 我不喜欢这样 它没有描述我编写该注释的原因,而且非常冗长。 我想做一个像@LibraryClass
这样的注释,它只是@SuppressWarnings("unused")
的别名。
简而言之, 我希望能够更改此设置:
@SuppressWarnings("unused")
public class MyLibraryClass {
public void myLibraryMethod() {
doSomething();
}
}
对此:
@LibraryClass
public class MyLibraryClass {
public void myLibraryMethod() {
doSomething();
}
}
但是我不知道该怎么做! 我尝试了所有这些,并且可以编译,但是IDE仍会警告未使用的方法:
@SuppressWarnings("unused")
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface Library {
SuppressWarnings superAnnotation() default @SuppressWarnings("unused");
String[] value() default {"unused"};
}
要完成您所要的内容的一个方面-将某种编译时逻辑附加到注释中-您需要研究注释处理。 批注处理器像代理一样挂接到Java运行时,并获得有关批注的通知并提供了处理批注的选项。 要使用它,您必须将注释处理器jar放在IDE的类路径上。
一些链接:
http://hannesdorfmann.com/annotation-processing/annotationprocessing101 http://programmaticallyspeaking.com/playing-with-java-annotation-processing.html
但是,这不允许您更改 Intellij检测未使用方法的方式,这似乎更接近于您的特定用例。 您可以做的是修改Intellij“未使用的方法”检查,以使其包含对您定义的自定义注释的检查。 YMMV,我以前从来没有在班级这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.