package com.example.cisum.utils;
import lombok.*;
import lombok.experimental.Accessors;
import lombok.experimental.FieldNameConstants;
import lombok.extern.apachecommons.CommonsLog;
import lombok.extern.log4j.Log4j;
import lombok.extern.log4j.Log4j2;
import lombok.extern.slf4j.Slf4j;
import lombok.extern.slf4j.XSlf4j;
import java.io.*;
import java.util.List;
@Slf4j//打印日志
@XSlf4j//打印日志2
@Log4j//打印日志3
@Log4j2//打印日志4
@CommonsLog//打印日志5
public class LombokDemo {
@Setter
@Getter
@EqualsAndHashCode(of = {"name", "age"})//指定哪些字段参与
@ToString(of = {"name", "age"})//指定哪些字段参与
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)//定义构造函数的修饰
private static class Demo1 {
private String name;
private Integer age;
}
@Data//geter setter tostring equel..
@Value
@Accessors(chain = true, fluent = true)
private static class Demo2 {
private String name;
private Integer age;
}
@Data
@Accessors(chain = true, fluent = true)//fluent 省去getName setName。。
private static class Demo3 {
private String name;
private Integer age;
public static void main(String[] args) {
Demo3 demo = new Demo3();
demo.age(111);//fluent 省去getName setName。。
demo.name("xxx");
demo.name("xx").age(11);//chain 链式结构
System.out.println(demo.age + "-" + demo.name);
}
}
@Builder//构造者模式
private static class Demo4 {
private String name;
private Integer age;
@Singular("addList")
private List<String> list;
public static void main(String[] args) {
Demo4 demo = Demo4.builder().name("xxx").age(222).addList("aa").addList("bbb").build();
System.out.println(demo);
}
}
@Synchronized//方法加锁
private void method2() {
}
@SneakyThrows//try catch
//Cleanup注解 替代close
private static void copyFileUsingFileStreams(File source, File dest) {
@Cleanup InputStream input = new FileInputStream(source);
@Cleanup OutputStream output = new FileOutputStream(dest);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) > 0) {
output.write(buf, 0, bytesRead);
}
}
@Data//geter setter tostring equel..
@Accessors(chain = true)
@FieldNameConstants//获取属性变量名
private static class Demo6 {
private String name;
private Integer age;
public static void main(String[] args) {
System.out.println(Fields.name);
System.out.println(Fields.age);
}
}
}