(1)@author:用来标识作者名
(2)@version:用于标识对象的版本号,适用范围:文件、类、方法。
(3)@Override:
用来修饰方法声明,告诉编译器该方法是重写父类中的方法,如果父类不存在该方法,则编译失败。
(4)@FunctionalInterface: 检测是否是函数式接口的
如果要限制注解的使用位置就用元注解。
限制自定义注解的使用范围(在什么位置可以使用) @Target({ElementType.METHOD,ElementType.TYPE})
TYPE: 用在类,接口上 FIELD:用在成员变量上
METHOD: 用在方法上 PARAMETER:用在参数上
CONSTRUCTOR:用在构造方法上 LOCAL_VARIABLE:用在局部变量上
@Retention 定义该注解的生命周期(有效范围)。
元注解(限制自定义注解的注解)之@Retention
java.lang.annotation.RetentionPolicy
枚举 可以理解为类,里面都是静态内容,直接用类名/枚举名调用
SOURCE:
注解只存在于Java源代码中,编译生成的字节码文件中就不存在了。
CLASS:
注解存在于Java源代码、编译以后的字节码文件中,运行的时候内存中没有,默认值。
RUNTIME:
注解存在于Java源代码中、编译以后的字节码文件中、运行时内存中,
程序可以通过反射获取该注解。
@Retention(RetentionPolicy.RUNTIME)指定注解的有效范围:RUNTIME
@Retention(RetentionPolicy.RUNTIME)
public @interface Books {
String value();
double price() default 100;
String[] authors();
}
Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。
lombok使用 添加lombox的jar包:lombok-1.18.8.jar。 为IDEA添加lombok插件(连接网络使用)
安装完毕后,重启IDEA
@Getter和@Setter 生成成员变量的get和set方法。
- 写在成员变量上,指对当前成员变量有效。
- 写在类上,对所有成员变量有效。
- 注意:静态成员变量无效。
@ToString 生成toString()方法。
@NoArgsConstructor和@AllArgsConstructor
- @NoArgsConstructor:无参数构造方法。
- @AllArgsConstructor:满参数构造方法。
@EqualsAndHashCode 作用:生成hashCode()和equals()方法。
@Data 注解只能写在类上。