创建一个@Stub注释,该注释在Java中充当@Deprecated
我想在Java中创建一个创建一个@Stub注释,该注释在Java中充当@Deprecated,java,intellij-idea,annotations,jsr305,Java,Intellij Idea,Annotations,Jsr305,我想在Java中创建一个@Stub、@Example或@Mock注释,以指示某些类只是用于测试的。我还喜欢将这些类设置为不推荐类,以阻止我的库的用户使用它们。我喜欢做一些类似于JSR305中的@Nullable和其他注释的东西 我想到了这个: import javax.annotation.meta.TypeQualifierNickname; import java.lang.annotation.Retention; import java.lang.annotation.Retention
@Stub
、@Example
或@Mock
注释,以指示某些类只是用于测试的。我还喜欢将这些类设置为不推荐类,以阻止我的库的用户使用它们。我喜欢做一些类似于JSR305中的@Nullable
和其他注释的东西
我想到了这个:
import javax.annotation.meta.TypeQualifierNickname;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
@Deprecated
@Retention(RetentionPolicy.RUNTIME)
@TypeQualifierNickname
@Target(value=TYPE)
public @interface Stub {
}
以及用例:
@Stub
public final class SuperAwesome implements Feature {
}
不幸的是,尽管使用了@typequalifier昵称
,但它与我的@Stub
注释一样,被Intellij和javac编译器标记为不推荐使用,而不是目标注释类
有没有一种方法可以在不需要更改javac或IDE的情况下工作?您需要编写一个自定义注释处理器作为
@Deprecated
注释适用于存根接口,而不适用于使用它的位置。
我做了一个快速搜索,但大多数示例只是在控制台上打印内容。这可能会有帮助
您需要编写一些逻辑来强制执行编程规则,即“不要使用
@Stub
注释调用方法”。您可以使用两个框架来实现这一点:和
缺点是库的用户每次编译代码时都需要运行工具。您需要编写指令,告诉他们如何调整构建过程以运行检查编程规则的工具