网站策划书包含的内容,化工设计网站,php网站怎么做后台管理,电商要怎么做起来Lombok 使用小结 Lombok 简介Lombok 安装Lombok 使用 API示例示例源码引用和引申Lombok 简介 Lombok 是一种 Java 实用工具#xff0c;可用来帮助开发人员消除 Java 的冗长#xff0c;尤其是对于简单的 Java 对象#xff08;POJO#xff09;。它通过注释实现这一目的。通过…Lombok 使用小结 Lombok 简介Lombok 安装Lombok 使用 API示例示例源码引用和引申Lombok 简介 Lombok 是一种 Java 实用工具可用来帮助开发人员消除 Java 的冗长尤其是对于简单的 Java 对象POJO。它通过注释实现这一目的。通过在开发环境中实现 Lombok开发人员可以节省构建诸如 hashCode() 和 equals() 、getter / setter 这样的方法以及以往用来分类各种 accessor 和 mutator 的大量时间。 Lombok 安装 使 IntelliJ IDEA 支持 Lombok 方式如下 1Intellij 设置支持注解处理 点击 File Settings Build Annotation Processors 勾选 Enable annotation processing 2安装插件 点击 Settings Plugins Browse repositories 查找 Lombok Plugin 并进行安装 重启 IntelliJ IDEA 3将 lombok 添加到 pom 文件 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.16.8/version
/dependency Lombok 使用 API Lombok 提供注解 API 来修饰指定的类 Getter and Setter Getter and Setter Lombok 代码 Getter Setter private boolean employed true;
Setter(AccessLevel.PROTECTED) private String name; 等价于 Java 源码 private boolean employed true;
private String name;public boolean isEmployed() {return employed;
}public void setEmployed(final boolean employed) {this.employed employed;
}protected void setName(final String name) {this.name name;
} NonNull NonNull Lombok 代码 Getter Setter NonNull
private ListPerson members; 等价于 Java 源码 NonNull
private ListPerson members;public Family(NonNull final ListPerson members) {if (members null) throw new java.lang.NullPointerException(members);this.members members;
}NonNull
public ListPerson getMembers() {return members;
}public void setMembers(NonNull final ListPerson members) {if (members null) throw new java.lang.NullPointerException(members);this.members members;
} ToString ToString Lombok 代码 ToString(callSupertrue,excludesomeExcludedField)
public class Foo extends Bar {private boolean someBoolean true;private String someStringField;private float someExcludedField;
} 等价于 Java 源码 public class Foo extends Bar {private boolean someBoolean true;private String someStringField;private float someExcludedField;java.lang.Overridepublic java.lang.String toString() {return Foo(super super.toString() , someBoolean someBoolean , someStringField someStringField );}
} EqualsAndHashCode EqualsAndHashCode Lombok 代码 EqualsAndHashCode(callSupertrue,exclude{address,city,state,zip})
public class Person extends SentientBeing {enum Gender { Male, Female }NonNull private String name;NonNull private Gender gender;private String ssn;private String address;private String city;private String state;private String zip;
} 等价于 Java 源码 public class Person extends SentientBeing {enum Gender {/*public static final*/ Male /* new Gender() */,/*public static final*/ Female /* new Gender() */;}NonNullprivate String name;NonNullprivate Gender gender;private String ssn;private String address;private String city;private String state;private String zip;java.lang.Overridepublic boolean equals(final java.lang.Object o) {if (o this) return true;if (o null) return false;if (o.getClass() ! this.getClass()) return false;if (!super.equals(o)) return false;final Person other (Person)o;if (this.name null ? other.name ! null : !this.name.equals(other.name)) return false;if (this.gender null ? other.gender ! null : !this.gender.equals(other.gender)) return false;if (this.ssn null ? other.ssn ! null : !this.ssn.equals(other.ssn)) return false;return true;}java.lang.Overridepublic int hashCode() {final int PRIME 31;int result 1;result result * PRIME super.hashCode();result result * PRIME (this.name null ? 0 : this.name.hashCode());result result * PRIME (this.gender null ? 0 : this.gender.hashCode());result result * PRIME (this.ssn null ? 0 : this.ssn.hashCode());return result;}
} Data Data Lombok 代码 Data(staticConstructorof)
public class Company {private final Person founder;private String name;private ListPerson employees;
} 等价于 Java 源码 public class Company {private final Person founder;private String name;private ListPerson employees;private Company(final Person founder) {this.founder founder;}public static Company of(final Person founder) {return new Company(founder);}public Person getFounder() {return founder;}public String getName() {return name;}public void setName(final String name) {this.name name;}public ListPerson getEmployees() {return employees;}public void setEmployees(final ListPerson employees) {this.employees employees;}java.lang.Overridepublic boolean equals(final java.lang.Object o) {if (o this) return true;if (o null) return false;if (o.getClass() ! this.getClass()) return false;final Company other (Company)o;if (this.founder null ? other.founder ! null : !this.founder.equals(other.founder)) return false;if (this.name null ? other.name ! null : !this.name.equals(other.name)) return false;if (this.employees null ? other.employees ! null : !this.employees.equals(other.employees)) return false;return true;}java.lang.Overridepublic int hashCode() {final int PRIME 31;int result 1;result result * PRIME (this.founder null ? 0 : this.founder.hashCode());result result * PRIME (this.name null ? 0 : this.name.hashCode());result result * PRIME (this.employees null ? 0 : this.employees.hashCode());return result;}java.lang.Overridepublic java.lang.String toString() {return Company(founder founder , name name , employees employees );}
} Cleanup Cleanup Lombok 代码 public void testCleanUp() {try {Cleanup ByteArrayOutputStream baos new ByteArrayOutputStream();baos.write(new byte[] {Y,e,s});System.out.println(baos.toString());} catch (IOException e) {e.printStackTrace();}
} 等价于 Java 源码 public void testCleanUp() {try {ByteArrayOutputStream baos new ByteArrayOutputStream();try {baos.write(new byte[]{Y, e, s});System.out.println(baos.toString());} finally {baos.close();}} catch (IOException e) {e.printStackTrace();}
} Synchronized Synchronized Lombok 代码 private DateFormat format new SimpleDateFormat(MM-dd-YYYY);Synchronized
public String synchronizedFormat(Date date) {return format.format(date);
} 等价于 Java 源码 private final java.lang.Object $lock new java.lang.Object[0];
private DateFormat format new SimpleDateFormat(MM-dd-YYYY);public String synchronizedFormat(Date date) {synchronized ($lock) {return format.format(date);}
} SneakyThrows SneakyThrows Lombok 代码 SneakyThrows
public void testSneakyThrows() {throw new IllegalAccessException();
} 等价于 Java 源码 public void testSneakyThrows() {try {throw new IllegalAccessException();} catch (java.lang.Throwable $ex) {throw lombok.Lombok.sneakyThrow($ex);}
} 示例 使用 Lombok 定义一个 Java Bean import lombok.Data;
import lombok.ToString;Data
ToString(exclude age)
public class Person {private String name;private Integer age;private String sex;
} 测试 Person person new Person();
person.setName(张三);
person.setAge(20);
person.setSex(男);
System.out.println(person.toString());
// output: Person(name张三, sex男) 示例源码 完整示例源码 引用和引申 引申 JavaStack参考 Lombok 官网Lombok GithubIntelliJ IDEA - Lombok Plugin