专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java自定义注解(java自定义注解实现数据脱敏)

temp10 2024-09-27 23:02:02 java教程 10 ℃ 0 评论

什么是注解

注解是一种能被添加到java源代码中的元数据,包、类、方法、参数都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在包、类、方法和参数上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。

注解的基本元素

声明一个注解要用到的东西

Java自定义注解(java自定义注解实现数据脱敏)

  • 修饰符
    • 访问修饰符必须为public,不写默认为pubic;
  • 关键字
    • 关键字为@interface;
  • 注解名称
    • 注解名称为自定义注解的名称,使用时还会用到;
  • 注解类型元素
    • 注解类型元素是注解中内容;
public @interface Info {
    String value() default "tracy";
    boolean isDelete();
}

元注解

JDK中有一些元注解,主要有@Target,@Retention,@Document,@Inherited用来修饰注解。

@Target:表明该注解可以应用的java元素类型


@Retention:表明该注解的生命周期


@Document:表明该注解标记的元素可以被Javadoc 或类似的工具文档化

@Inherited:表明使用了@Inherited注解的注解,所标记的类的子类也会拥有这个注解

@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Info {
    String value() default "tracy";
    boolean isDelete();
}

使用自定义注解

配置注解

定义一个Person类

@Data
@Builder
@Info(isDelete = true)
public class Person {
    private String name;
    private int age;
    private boolean isDelete;
}

利用反射解析注解

public class AnnotationTest {
    public static void main(String[] args) {
        Person person = Person.builder().build();
        Class clazz = person.getClass();
        //判断person对象上是否有Info注解
        if(clazz.isAnnotationPresent(Info.class)){
            System.out.println("Person类上配置了Info注解!");
            //获取该对象上Info类型的注解
            Info infoAnno = (Info) clazz.getAnnotation(Info.class);
            System.out.println("person.name :" + infoAnno.value() + ",person.isDelete:" + infoAnno.isDelete());
        }else{
            System.out.println("Person类上没有配置Info注解!");
        }
    }
}

运行结果:

Person类上配置了Info注解!
person.name :tracy,person.isDelete:true

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表