使用lombok来简化你的Java Bean
能做什么?
在使用lombok之前:
public class Book {private Integer id;private String title;private Date releaseDate;private Double price;private String[] authors;private String publisher;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public Date getReleaseDate() {return releaseDate;}public void setReleaseDate(Date releaseDate) {this.releaseDate = releaseDate;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public String[] getAuthors() {return authors;}public void setAuthors(String[] authors) {this.authors = authors;}public String getPublisher() {return publisher;}public void setPublisher(String publisher) {this.publisher = publisher;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (!(o instanceof Book)) return false;if (!super.equals(o)) return false;Book book = (Book) o;if (getId() != null ? !getId().equals(book.getId()) : book.getId() != null) return false;if (getTitle() != null ? !getTitle().equals(book.getTitle()) : book.getTitle() != null) return false;if (getReleaseDate() != null ? !getReleaseDate().equals(book.getReleaseDate()) : book.getReleaseDate() != null)return false;if (getPrice() != null ? !getPrice().equals(book.getPrice()) : book.getPrice() != null) return false;// Probably incorrect - comparing Object[] arrays with Arrays.equalsif (!Arrays.equals(getAuthors(), book.getAuthors())) return false;return getPublisher() != null ? getPublisher().equals(book.getPublisher()) : book.getPublisher() == null;}@Overridepublic int hashCode() {int result = super.hashCode();result = 31 * result + (getId() != null ? getId().hashCode() : 0);result = 31 * result + (getTitle() != null ? getTitle().hashCode() : 0);result = 31 * result + (getReleaseDate() != null ? getReleaseDate().hashCode() : 0);result = 31 * result + (getPrice() != null ? getPrice().hashCode() : 0);result = 31 * result + Arrays.hashCode(getAuthors());result = 31 * result + (getPublisher() != null ? getPublisher().hashCode() : 0);return result;}@Overridepublic String toString() {return "Book{" +"id=" + id +", title='" + title + '\'' +", releaseDate=" + releaseDate +", price=" + price +", authors=" + Arrays.toString(authors) +", publisher='" + publisher + '\'' +'}';} }在使用之后:
@Data public class Book {private Integer id;private String title;private Date releaseDate;private Double price;private String[] authors;private String publisher; }并且從功能上,使用后=使用前。
說的簡單點:從此以后不需要寫Getter、Setter、toString、hashCode、canEqual、constructor這些大部分相似,卻又不得不寫的代碼了。
怎么用?
一共有三個步驟
為你的開發工具安裝插件。
IntelliJ IDEA: settings->Plugins->Browse Repositories->搜索Lombok Plugin->install
Eclipse / MyEclipse / Spring Tool Suite / JBoss Developer Studio: 看這里
Netbeans: 看這里
下載并導入Jar包,下載地址
在需要的類上標注注解
目前我使用的版本是1.16.16,有下面幾個常用注解:
@Date
生成Getter、Setter、toString、equals、hashCode方法。
可標注:Class
@Value
生成Getter、toString、equals、hashCode、還有全字段的構造方法。并且會將字段全都添加final。
可標注:Class
@Builder
在類內部生成一個名為類名+Builder的內部類,用于快速構建。
可標注:Class
你可以這樣使用它:
@Builder public class Book {private Integer id;private String title;private Date releaseDate;private Double price;private String[] authors;private String publisher;} public static void main(String[] args) {Book book = Book.builder().id(1).title("書名").build(); }@Getter/@Setter
生成Getter或Setter方法。如果標注在類上則會生成這個類中所有字段的Getter或Setter方法。
可標注:Field,Class
@NonNull
為你的構造函數、Setter添加空值校驗。標注的字段賦值為空時,會拋出NullPointerException。
可標注:Field,Method,Parameter,Local Variable
為什么?
自從Java 6起,Javac就支持了一個名叫JSR 269 Pluggable Annotation Processing API的規范,它的作用就是:如果你實現了這個API,在Javac編譯時就會得到調用。而lombok正是運用了這一點。
流程是這樣的:
Javac編譯源代碼,并生成語法樹(AST)
Javac尋找實現了JSR 269 .... API的代碼(lombok),并調用。
lombok尋找被標注了注解的類,修改Javac生成的語法樹(AST)。
Javac將語法樹生成為字節碼(.class)
就到這里了
它還具備很多好用的功能,你可以去這里看看。
總結
以上是生活随笔為你收集整理的使用lombok来简化你的Java Bean的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抓包工具 - Fiddler(详细介绍)
- 下一篇: java美元兑换,(Java实现) 美元