繁体   English   中英

如何使注释更具语义?

[英]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,我以前从来没有在班级这样做。

https://gist.github.com/itzg/5e90609cde1473ef9d4d

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM