JAVA:写代码也可以如此优雅----自定义注解
作用
在程序中起到一个标注作用,比如执行这方法的时候我需要记录日志,我可以在上面标注一下;在比如这个方法是一个有问题的方法但是又改不动需要特殊处理,我也可以标注一下;在比如这个方法它从父类中继承来的,我也可以标注一下,标注的目的是为了处理。如果标注的东西你没有处理那他就只是一个注解 ,没有如何作用,在符合语法的情况下不会对程序造成影响。
怎么用
自定义注解
1.自定义注解本质上就是一个接口,只是实现了特殊接口
2.实现方式:
1.创建自己的接口
例如:
//设置注解作用域 METHOD:标注在方法上 TYPE:标注在接口丶类丶枚举 上 FIELD:标注在属性上
@Target({ElementType.METHOD,ElementType.TYPE,ElementType.FIELD})
//设置注解运行范围
// 1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
// 2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
// 3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
@Retention(RetentionPolicy.RUNTIME)
public @interface IsZPF {
//定义属性并设置默认值
String name() default "大帅哥";
String sex() default "男";
}
3.获取接口属性的值(反射)
ps:SysUser为用了注解的类
Class<SysUser> sysUserClass = SysUser.class;
//获取类上的指定注解
IsZPF isZPF = sysUserClass.getDeclaredAnnotation(IsZPF.class);
System.out.println(isZPF.name());
System.out.println(isZPF.sex());
使用场景
1.AOP中切点设置(解耦合)
2.特定方法标注(比如特殊接口加盐)
3.特定类标注(比如特殊对象加载到Spring容器)
3.特定 属性标注(比如特殊属性初始化值)
。
。
。
注意:注解不是必要的,但不得不说注解改变了java编程的设计手段,改变了java开发者的思维方式,它能让代码变得更优雅。