Java注解
程序员文章站
2022-06-17 13:02:01
...
Java 注解是 Java 1.5 引入的一个工具,类似于给代码贴个标签,通过注解可以为代码添加标签信息。这些标签信息可以添加在字段、方法和类上。开发工具、部署工具或者运行类库,可以对这些标签信息进行特殊的处理,从而获得更丰富的功能。
常用注解
@Override 只能标注在子类覆盖父类的方法上面,有提示的作用
@Deprecated 标注在过时的方法或类上面,有提示的作用
@SuppressWarnings("unchecked") 标注在编译器认为有问题的类、方法等上面,用来取消编译器的警告提示,警告类型有serial、unchecked、unused、all
元注解
元注解用来在声明新注解时指定新注解的一些特性
@Target 指定新注解标注的位置,比如类、字段、方法等,取值有ElementType.Method等
@Retention 指定新注解的信息保留到什么时候,取值有RetentionPolicy.RUNTIME等
@Inherited 指定新注解标注在父类上时可被子类继承
如何来申明注解呢?
@Deprecated
public String getResult () {
return "resule";
}
注解的使用:
public class Person {
private String name;
private int age;
@ShowName(name = "姓名")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ShowName(name = "年龄")
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
使用@Deprecated注解,当调用getResult()方法的时候会提示 这个方法Deprecated
@Deprecated
public String getResult () {
return "resule";
}
读取注解信息:
public class testMain {
public static void main(String[] args) throws Exception {
Person person = new Person();
person.setName("bobo");
person.setAge(16);
BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);
PropertyDescriptor[] propDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propDescriptor : propDescriptors) {
Method getMethod = propDescriptor.getReadMethod();
if (getMethod == null) {
continue;
}
ShowName displayName = getMethod.getAnnotation(ShowName.class);
if (displayName != null) {
System.out.println(displayName.name() + ":" + getMethod.invoke(person));
} else {
System.out.println(propDescriptor.getName() + ":" + getMethod.invoke(person));
}
}
}
}