如何使注释更具语义?

时间:2016-02-14 20:24:19

标签: java annotations

我正在编写一个库,因此我不经常在同一个项目中的类中使用这些方法。因此,我的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"};
}

1 个答案:

答案 0 :(得分:1)

要做你要求的一个方面 - 将某种编译时逻辑附加到注释 - 你需要研究注释处理。注释处理器像代理一样挂钩到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