idea 不認識 @Data註解,需要安裝Lombok插件

如下代碼,如果出現報錯是因爲不識別@Data等註解

@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult<T> {

    private Integer code;
    private String message;
    private T data;

    public CommonResult(Integer code, String message) {
        this(code, message, null);  // 該行代碼報紅
    }
}

我們在寫一個Do類的時候,經常需要先寫屬性,然後手寫或者自動生成get和set方法,然後重寫ToString方法,然後等等操作,最終就是 圖-1 的樣子。日常開發中需要寫的Do類一定會很多,如果我們把每一個類都寫成圖-1的樣式,會產生太多的樣板式代碼,而Lombok出現就是爲了解決代碼書寫的冗餘問題。

要使用註解,必須引入lombok提供的庫

<dependency>    
    <groupId>org.projectlombok</groupId>    
    <artifactId>lombok</artifactId>
</dependency>

idea 設置 -> plugin (搜索並安裝Lombok插件)

重啓idea

常用的 lombok 註解:

@Data :註解在類上;包含了@ToString,@EqualsAndHashCode,@Getter / @Setter和@RequiredArgsConstructor的功能,提供類所有屬性的 getter 和 setter 方法,此外還提供了equals、canEqual、hashCode、toString 方法

@Setter:註解在屬性上;爲屬性提供 setter 方法

@Getter:註解在屬性上;爲屬性提供 getter 方法

@ToString:註解在類上;生成toString()方法,默認情況下,它會按順序(以逗號分隔)打印你的類名稱以及每個字段。可以這樣設置不包含哪些字段@ToString(exclude = “id”) / @ToString(exclude = {“id”,“name”})

如果繼承的有父類的話,可以設置callSuper 讓其調用父類的toString()方法,例如:@ToString(callSuper = true)

@EqualsAndHashCode:註解在類上;生成hashCode()和equals()方法,默認情況下,它將使用所有非靜態,非transient字段。但可以通過在可選的exclude參數中來排除更多字段。或者,通過在parameter參數中命名它們來準確指定希望使用哪些字段。

@NonNull: 註解在屬性上;標識屬性是不能爲空,爲空則拋出異常。

@Slf4j :註解在類上;根據用戶實際使用的日誌框架生成log日誌對象。

@Log4j :註解在類上;爲類提供一個 屬性名爲log 的 log4j 日誌對象

@NoArgsConstructor:註解在類上;爲類提供一個無參的構造方法。當類中有final字段沒有被初始化時,編譯器會報錯,此時可用@NoArgsConstructor(force = true),然後就會爲沒有初始化的final字段設置默認值 0 / false / null。對於具有約束的字段(例如@NonNull字段),不會生成檢查或分配,因此請注意,正確初始化這些字段之前,這些約束無效。

@AllArgsConstructor:註解在類上;爲類提供一個全參的構造方法

默認生成的方法是public的,如果要修改方法修飾符可以設置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)

@RequiredArgsConstructor:註解在類上;會生成構造方法(可能帶參數也可能不帶參數),如果帶參數,這參數只能是以final修飾的未經初始化的字段,或者是以@NonNull註解的未經初始化的字段@RequiredArgsConstructor(staticName = “of”)會生成一個of()的靜態方法,並把構造方法設置爲私有的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章