文章目录
原理
JSR-269:插件化注解处理API
安装
idea中安装Lombok插件即可。
常用注解
@Getter/@Setter
标注在类或者成员属性上,自动生成getter和setter方法
@Getter
@Setter
public class User {
private String name;
private Integer age;
}
可以通过属性设置访问级别
如果访问级别设置为NONE
,表示该属性不自动生成getter和setter方法。
@ToString
自动生成tostring方法
@ToString
public class User {
如果需要排除某些属性,通过exclude
@ToString(exclude = {"name","age",...})
如果需要指定输出某些属性或者静态属性(默认不输出),通过of
@ToString(of = {"name","age",...})
@EqualsAndHashCode
自动生成三个方法:
同样有of和exclude属性
@NonNull
标注方法(包括普通方法和构造方法)参数不能为空。
public void test(@NonNull String str){
System.out.println(str);
}
标注成员属性不能为空
public class User {
@NonNull
private String name;
@NoArgsConstructor
无参构造器
@RequiredArgsConstructor
生成有参构造器,参数包括标注@NonNull的属性和未赋值的final属性(可能会与@NoArgsConstructor有冲突)
@AllArgsConstructor
全参构造器
@Data
@Getter/@Setter+@ToString+@EqualsAndHashCode+@RequiredArgsConstructor
@Builder
支持流式创建一个对象
@Builder
public class User {
private String name;
private Integer age;
public static void main(String[] args) {
User user=User.builder().name("zhs").age(18).build();
}
}
@Log、@Slf4j …
使用log.info();
输出日志
val
这不是一个注解,类似于js一样定义一个变量
val map=new HashMap<String,String>();
@Cleanup
自动关闭IO流
@Cleanup InputSteam is=new FileInputStream("path");