在java剛開始學習的時候,首先就會學習封裝、繼承和多態,就拿封裝來說,封裝就是為了保護數據安全而將實體類內部數據保持為私有狀態,如果外部程序想要訪問里面的數據就必須調用此實體類提供的相關數據接口,這樣既保證了數據安全又保證了對數據的訪問控制。
比如有一個Book類,里面有一個bookName字段,那么在實體類里面如果要實現封裝的話就要這樣:
public class Book{ private String bookName; public void setBookName(String bookName){ this.bookName=bookName; } public String getBookName(){ return this.bookName; }
這里的getBookName和setBookName就是數據訪問接口,如果要得到數據必須調用getBookName,要想設置數據必須調用setBookName。在類熟悉比較少(1-3)的情況下自己寫或者通過eclipse和Idea的生成方法可以很輕松的實現,但是如果這個類的屬性非常多,高達二十幾個甚至更多,難道還要這樣自己寫嗎?用IDEA的自動生成工具是可以一次性生成所有的get和set方法,但是如果后來屬性名和返回值類型這些有大量改動去一個一個改動是不是會顯得很麻煩,這個時候就體現出工具的重要性了,lombok就是這樣一個一鍵生成get和set的代碼方法生成工具,使用lombok后book類變成了這樣:
@Data public class Book{ private String bookName; }
@Data是lombok的使用注解,當使用此注解后lombok會自動為實體類的屬性創建get和set方法,而無需自己再去寫,這也意味着屬性名和值的改變我們都不再需要管了,把更多的精力放在代碼開發上來創造更多的個人價值。這里是lombok的部分源碼:
/** * @see Getter * @see Setter * @see RequiredArgsConstructor * @see ToString * @see EqualsAndHashCode * @see lombok.Value */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) public @interface Data { String staticConstructor() default ""; }
@interface聲明這是一個注解,Getter用於生成get方法,Setter用於生成set方法,RequiredArgsConstructor用於自動生成構造函數,ToString用於生成toString方法,EqualsAndHashCode表示自動生成equals和hashCode方法,靜態構造函數默認生成" ";也就是說一個@Data就可以同時實現以上6種注解,對於我們一般的實體類來說有時候顯得太臃腫,因為@Data引入了一些不必要的功能,那么怎么辦呢,比如說我們只想實現get和set,這其實很簡單,直接使用Getter和Setter就行了:
@Getter @Setter public class Book{ private String bookName; }
這樣下來代碼一下就輕便了很多,也沒有引入多余的功能。