Lombok注解使用备忘

Lombok注解使用备忘

1. 常用注解及作用说明:

@Data:注解在类上,将类提供的所有属性都添加get、set方法,
	   同时添加equals、canEquals、hashCode、toString方法
@Setter:注解在类上,为所有属性添加set方法、注解在属性上为该属性提供set方法
@Getter:注解在类上,为所有的属性添加get方法、注解在属性上为该属性提供get方法
@NotNull:在参数中使用时,如果调用时传了null值,就会抛出空指针异常
@Synchronized 用于方法,可以锁定指定的对象,如果不指定,则默认创建一个对象锁定
@Log: 作用于类,创建一个log属性
@Builder:使用builder模式创建对象
@NoArgsConstructor:创建一个无参构造函数
@AllArgsConstructor:创建一个全参构造函数
@ToString:创建一个toString方法
@Accessors(chain = true): 使用链式设置属性,set方法返回的是this对象。
@Accessors(fluent = true):使用链式设置属性,和chain=true有区别,可参考下方具体实例
@RequiredArgsConstructor:创建对象, 例: 在class上添加@RequiredArgsConstructor(staticName = "of"): 会创建生成一个静态方法
@UtilityClass:工具类上添加该注解,会将类构造方法私有化,无法new出来
@ExtensionMethod:设置父类
@FieldDefaults:设置属性的使用范围,如private、public等,也可以设置属性是否被final修饰。
@EqualsAndHashCode:重写equals和hashcode方法。
@toString:创建toString方法。
@Cleanup: 关闭流、连接点等,可以不需要关闭使用流对象.

2. 部分注解使用实例参考:

2-1 @UtilityClass:工具类注解,构造方法私有化

@UtilityClass
public class Utility {
    public String getName() {
        return "name";
    }
}
public static void main(String[] args) {
    // Utility utility = new Utility(); 构造函数为私有的,无法new出来
    System.out.println(Utility.getName()); 
}

2-2 @CleanUp: 清理流对象,省的自己写关闭相关代码

@Cleanup
OutputStream outStream = new FileOutputStream(new File("text.txt"));
@Cleanup
InputStream inStream = new FileInputStream(new File("text2.txt"));
byte[] b = new byte[65536];
while (true) {
   int r = inStream.read(b);
   if (r == -1) break;
   outStream.write(b, 0, r); 
}

2-3 链式注解

2-3-1 链式注解一: @Accessors(chain = true)
@Data
@Accessors(chain = true)
public class User {
    private String id;
    private String name;
    private Integer age;
}
 
public static void main(String[] args) {
    //使用  @Accessors(chain = true)
    User userChain = new User();
    // set方法返回User本身,可以一直“.”下去
    userChain.setId("1").setName("chain").setAge(1);
	
    System.out.println(userChain);
}
2-3-2 链式注解二: @Accessors(fluent = true)
// fluent的中文含义是流畅的,设置为true,则getter和setter方法的方法名都是基础属性名【即不是传统的getXxx,setXxx】,且setter方法返回当前对象
@Data
@Accessors(fluent = true)
public class Student {
    private String name;
    private Integer age;
    public static void main(String[] args) {
    	// 使用@Accessors(fluent = true)后,赋值不需要写SetXXX
        Student student = new Student().name("lsii").age(12);
        System.out.println(student);
    }
}

2-3-3 @Build注解: 也可实现链式注解的效果
@Data
@Builder  //使用链式风格优雅地创建对象
public class Book {
    private String name;
    private String author;
    private float price;
	
	public static void main(String[] args) {
		// 使用Builder注解后,赋值不需要写SetXXX
        Book book = Book.builder().name("xx入门到精通").author("张三").price(66.5f).build();
        System.out.println(book);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>