欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java注解

程序员文章站 2022-06-17 13:02:01
...

Java 注解是 Java 1.5 引入的一个工具,类似于给代码贴个标签,通过注解可以为代码添加标签信息。这些标签信息可以添加在字段、方法和类上。开发工具、部署工具或者运行类库,可以对这些标签信息进行特殊的处理,从而获得更丰富的功能。

Java注解

 

常用注解

@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));
            }
        }
    }
}