今天小編給大家分享一下Java中Lombok常用注解有哪些的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
依次點擊:FIle-Settings-Plugins,從插件欄中搜索Lombok進行安裝,安裝之后勾選Lombok啟動即可。
放在類上,為該類的所有屬性自動生成Getter和Setter方法
import lombok.Getter; import lombok.Setter; /** * @program: our-task * @description: 學生類 * @author: water76016 * @create: 2020-12-15 10:57 **/ @Getter @Setter public class Student { int id; String name; int age; }
自動重寫toString方法,和我們平時使用IDEA編輯器自動生成的一樣
/** * @program: our-task * @description: 學生類 * @author: water76016 * @create: 2020-12-15 10:57 **/ @ToString public class Student { int id; String name; int age; }
自動生成equal(Object other)和hashCode()方法,如果某些變量不想要加入該注解,可以使用exclude進行排除
import lombok.EqualsAndHashCode; @EqualsAndHashCode public class Student { int id; String name; int age; }
import lombok.EqualsAndHashCode; //把name屬性排除在外 @EqualsAndHashCode(exclude = "name") public class Student { int id; String name; int age; }
問:為什么把生成equal(Object other)和hashCode()方法弄成一個注解,而不是分開使用?
答:在Java中有規定:當兩個對象相等時,它們的hashcode是一定相等的。但是,當兩個對象的hashcode相同,對象不一定相等。這樣做是為了防止違反Java規定的情況發生。
生成一個不包含任何參數的無參構造器
import lombok.NoArgsConstructor; @NoArgsConstructor public class Student { int id; String name; int age; }
生成一個包含所有參數的構造器
import lombok.AllArgsConstructor; @AllArgsConstructor public class Student { int id; String name; int age; }
為“特定參數”生成構造器,這里的“特定參數”,特指那些加上final修飾詞的屬性
import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class Student { int id; final String name; int age; public static void main(String[] args) { Student student = new Student("33"); } }
這里我們只為name加上final修飾,可以發現,我們只生成了一個包含name屬性的構造器。另外,如果所有的屬性都沒有final修飾的話,使用@RequiredArgsConstructor會生成一個無參的構造器。
這是一個組合注解,加了這個注解,相當于加入了@Getter、@Setter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor這五個注解。
這也是一個組合注解,但是會把所有的變量都設置為final的,其他的就和@Data一樣了。等同于加入了@Getter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor這四個注解(由于所有屬性是final的,所以沒有@setter注解了)。
流式的set值寫法,不過畢竟是給屬性賦值,基本的setter還是需要有的,一般來說,@Builder會和@Data一起使用。
import lombok.Builder; import lombok.Data; @Builder @Data public class Student { int id; String name; int age; public static void main(String[] args) { Student student = Student.builder().id(1).name("water").age(18).build(); } }
自動生成該類的log靜態常量,就可以直接打印日志了,不用去new一個log的靜態常量了。
@Slf4j public class Student { int id; String name; int age; public static void main(String[] args) { log.info("hello world"); } }
以上就是“Java中Lombok常用注解有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。