59-注解

55 阅读2分钟
	(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;//价格,默认值为 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  注解只能写在类上。