框架基础(6) :浅谈Java注解

在Java开发中,特别框架中充拆着各种注解,注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”。应用场景可以通过反射给类赋值。
在这里做个示例给演示一下

定义一个注解

@Retention(RetentionPolicy.RUNTIME)//定义在运行时启用
public @interface MyAnnotation {
    
    
    //定义一个变量
    public String name();//变量
    public int age();//单个变量
    public String[] like() default {
    
    "打球","唱歌"};//数组 给默认值
    public dpclass dp() default dpclass.d1; //枚举 给默认值

}

在学习类上使用注解


@MyAnnotation(name = "张三",age =11)//启用注解 具有默认值的注解可以不指定,否则必须要指定
public class Stu {
    
    
    private String name;
    private int age;
    public dpclass cl;
    private String[] like;

    public Stu() {
    
    
    }

    public Stu(String name, int age, dpclass cl) {
    
    
        this.name = name;
        this.age = age;
        this.cl = cl;
    }

    public void setLike(String[] like) {
    
    
        this.like = like;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public dpclass getCl() {
    
    
        return cl;
    }

    public void setCl(dpclass cl) {
    
    
        this.cl = cl;
    }

    @Override
    public String toString() {
    
    
        return "Stu{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", cl=" + cl +
                ", like=" + Arrays.toString(like) +
                '}';
    }
}

注解通过反射实现类赋值

Class<Stu> stuClass = Stu.class;
        MyAnnotation annotation = stuClass.getAnnotation(MyAnnotation.class);
        String name = annotation.name();
        int age = annotation.age();
        String[] like = annotation.like();
        dpclass dp = annotation.dp();

        Stu stu=stuClass.newInstance();
        stu.setAge(age);
        stu.setCl(dp);
        stu.setName(name);
        stu.setLike(like);
        System.out.println(stu.toString());

效果

Stu{name=‘张三’, age=11, cl=d1, like=[打球, 唱歌]}

猜你喜欢

转载自blog.csdn.net/weixin_44690195/article/details/106733406