在开发时经常为某一些类、方法、属性增加注解。例如:
@TestInterface(key = "bilibili", value = "小破站")
public class Bilibili {
public String b1;
@TestInterface(key = "b2", value = "牛逼普拉斯")
public String b2;
public String b3;
public String getB1() {
return b1;
}
public void setB1(String b1) {
this.b1 = b1;
}
public String getB2() {
return b2;
}
public void setB2(String b2) {
this.b2 = b2;
}
public String getB3() {
return b3;
}
public void setB3(String b3) {
this.b3 = b3;
}
}
此注释@TestInterface为自己定义的注释,如下:
@Retention(RetentionPolicy.RUNTIME)
public @interface TestInterface {
String key();
String value();
}
使用@interface 定义注释,有两个值,使用时为key,value均赋值。
Test类
public class Test {
public static void main(String[] args) {
Field[] fs = Bilibili.class.getDeclaredFields();
TestInterface tt = Bilibili.class.getAnnotation(TestInterface.class);
System.out.println("类注释key="+tt.key());
System.out.println("类注释value="+tt.value());
for (Field field : fs) {
TestInterface t = field.getAnnotation(TestInterface.class);
if(t != null) {
System.out.println("属性注释key="+t.key());
System.out.println("属性注释value="+t.value());
}
}
}
}
其中的TestInterface tt = Bilibili.class.getAnnotation(TestInterface.class);
此时调用getAnnotation会检测类Bilibili是否有TestInterface注释,如果有,则返回TestInterface对象tt,下面可以获取到tt.key() 与tt.value()。
同理,下面也能获取到属性的注解信息。
运行结果: