我有一个注释:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String annotationArgument1() default "";
String annotationArgument2();
}
我有两个班:
class MyClass1 {
@MyAnnotation(annotationArgument1="ABC", annotationArgument2="XYZ")
public void method1(MyClass2 object) {
//do something
}
@MyAnnotation(annotationArgument1="MNO", annotationArgument2="PQR")
public void method2(MyClass2 object) {
//do something
}
}
class MyClass2 {
int num;
}
我希望method1
和method2
(或使用@MyAnnotation
注释的任何其他类中的任何其他方法)只将一个参数作为MyClass2
,因为它们带有{注释{1}}。如果传递了其他参数,则必须给出编译时错误。
实际上可以这样做吗? 如果是的话,怎么做呢?如果不是,那么这种行为可以替代什么呢?
答案 0 :(得分:2)
AFAIK,您可以使用annotation processor在编译时检查方法签名。
我建议: