欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中Lombok常用注解分享

 更新時(shí)間:2023年04月21日 11:45:31   作者:冷小風(fēng)的IT生活  
以前的Java項(xiàng)目中充斥了太多不友好的代碼,這些代碼不僅沒有什么技術(shù)含量,還影響代碼的美觀,所以Lombok應(yīng)運(yùn)而生了。本文和大家分享了一些Java中Lombok常用注解,需要的可以了解一下

以前的Java項(xiàng)目中充斥了太多不友好的代碼:POJO的Getter/Setter/toString等等,這些代碼由于沒有什么技術(shù)含量,影響了代碼的美觀等缺點(diǎn),讓Lombok應(yīng)運(yùn)而生。

Our-task介紹

本篇博客是我的github上項(xiàng)目our-task:一個(gè)完整的清單管理系統(tǒng)的配套教程文檔,大家感興趣的話,可以去看看

安裝Lombok

加入Maven依賴

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

IDEA中安裝Lombok插件

依次點(diǎn)擊:FIle-Settings-Plugins,從插件欄中搜索Lombok進(jìn)行安裝,安裝之后勾選Lombok啟動(dòng)即可。

注解介紹

@Getter和@Setter

放在類上,為該類的所有屬性自動(dòng)生成Getter和Setter方法

import lombok.Getter;
import lombok.Setter;

/**
 * @program: our-task
 * @description: 學(xué)生類
 * @author: water76016
 * @create: 2020-12-15 10:57
 **/
@Getter
@Setter
public class Student {
    int id;
    String name;
    int age;
}

@ToString

自動(dòng)重寫toString方法,和我們平時(shí)使用IDEA編輯器自動(dòng)生成的一樣

/**
 * @program: our-task
 * @description: 學(xué)生類
 * @author: water76016
 * @create: 2020-12-15 10:57
 **/
@ToString
public class Student {
    int id;
    String name;
    int age;
}

@EqualsAndHashCode

自動(dòng)生成equal(Object other)和hashCode()方法,如果某些變量不想要加入該注解,可以使用exclude進(jìn)行排除

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;
}

問(wèn):為什么把生成equal(Object other)和hashCode()方法弄成一個(gè)注解,而不是分開使用?

答:在Java中有規(guī)定:當(dāng)兩個(gè)對(duì)象相等時(shí),它們的hashcode是一定相等的。但是,當(dāng)兩個(gè)對(duì)象的hashcode相同,對(duì)象不一定相等。這樣做是為了防止違反Java規(guī)定的情況發(fā)生。

@NoArgsConstructor

生成一個(gè)不包含任何參數(shù)的無(wú)參構(gòu)造器

import lombok.NoArgsConstructor;

@NoArgsConstructor
public class Student {
    int id;
    String name;
    int age;
}

@AllArgsConstructor

生成一個(gè)包含所有參數(shù)的構(gòu)造器

import lombok.AllArgsConstructor;

@AllArgsConstructor
public class Student {
    int id;
    String name;
    int age;
}

@RequiredArgsConstructor

為“特定參數(shù)”生成構(gòu)造器,這里的“特定參數(shù)”,特指那些加上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修飾,可以發(fā)現(xiàn),我們只生成了一個(gè)包含name屬性的構(gòu)造器。另外,如果所有的屬性都沒有final修飾的話,使用@RequiredArgsConstructor會(huì)生成一個(gè)無(wú)參的構(gòu)造器。

@Data

這是一個(gè)組合注解,加了這個(gè)注解,相當(dāng)于加入了@Getter、@Setter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor這五個(gè)注解。

@Value

這也是一個(gè)組合注解,但是會(huì)把所有的變量都設(shè)置為final的,其他的就和@Data一樣了。等同于加入了@Getter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor這四個(gè)注解(由于所有屬性是final的,所以沒有@setter注解了)。

@Builder

流式的set值寫法,不過(guò)畢竟是給屬性賦值,基本的setter還是需要有的,一般來(lái)說(shuō),@Builder會(huì)和@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();
    }
}

@Slf4j

自動(dòng)生成該類的log靜態(tài)常量,就可以直接打印日志了,不用去new一個(gè)log的靜態(tài)常量了。

@Slf4j
public class Student {
    int id;
    String name;
    int age;

    public static void main(String[] args) {
        log.info("hello world");
    }
}

以上就是Java中Lombok常用注解分享的詳細(xì)內(nèi)容,更多關(guān)于Java Lombok常用注解的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論