@自定义注解的使用

注解的创建和使用

1、先编写一个注解 注解名定义为 Name,里边并且有个参数nameValue 默认值设置为“java”。
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
*@Auther: shiyunpeng
*@Date: 2018\12\5 0005 22:13
*@Description: 自定义注解
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Name {
    String nameValue() default "java";
}
2、创建一个实体类(没有加注解的时候)
public class NameEntity {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
3、测试类(没使用注解的测试版本)
import java.lang.reflect.Field;

public class TestName {
    public static void main(String[] args) {
        getValue(NameEntity.class);
    }
    
    public static void getValue(Class clazz){
        Field[] fields = clazz.getDeclaredFields();
        for(Field field:fields){
            System.out.println(field.getName());//获取到NameEntity中的元素名
        }
    }
}
4、运行结果

在这里插入图片描述

5、在实体类中 加上注解之后
public class NameEntity {
    @Name  //使用默认
    private int id;
    
    @Name(nameValue = "jjjjjj") //自定义赋值
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
5、测试类(在加上注解之后)
public static void getValue(Class clazz){
        Field[] fields = clazz.getDeclaredFields();
        for(Field field:fields){
            System.out.println(field.getName());//获取到NameEntity中的元素名
            //if(field.isAnnotationPresent(Name.class)){
                System.out.println("注解标注后的值:"+field.getAnnotation(Name.class).nameValue());
            //}
        }
    }
6、运行结果

在这里插入图片描述

这是自定义注解的使用方式,以后还会深刻研究!

猜你喜欢

转载自blog.csdn.net/qq_37384795/article/details/84844999
今日推荐