最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Lombok常用注解分享

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

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

Our-task介紹

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

安裝Lombok

加入Maven依賴

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

IDEA中安裝Lombok插件

依次點擊:FIle-Settings-Plugins,從插件欄中搜索Lombok進行安裝,安裝之后勾選Lombok啟動即可。

注解介紹

@Getter和@Setter

放在類上,為該類的所有屬性自動生成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

自動重寫toString方法,和我們平時使用IDEA編輯器自動生成的一樣

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

@EqualsAndHashCode

自動生成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中有規(guī)定:當兩個對象相等時,它們的hashcode是一定相等的。但是,當兩個對象的hashcode相同,對象不一定相等。這樣做是為了防止違反Java規(guī)定的情況發(fā)生。

@NoArgsConstructor

生成一個不包含任何參數(shù)的無參構造器

import lombok.NoArgsConstructor;

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

@AllArgsConstructor

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

import lombok.AllArgsConstructor;

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

@RequiredArgsConstructor

為“特定參數(shù)”生成構造器,這里的“特定參數(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),我們只生成了一個包含name屬性的構造器。另外,如果所有的屬性都沒有final修飾的話,使用@RequiredArgsConstructor會生成一個無參的構造器。

@Data

這是一個組合注解,加了這個注解,相當于加入了@Getter、@Setter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor這五個注解。

@Value

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

@Builder

流式的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();
    }
}

@Slf4j

自動生成該類的log靜態(tài)常量,就可以直接打印日志了,不用去new一個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常用注解分享的詳細內(nèi)容,更多關于Java Lombok常用注解的資料請關注腳本之家其它相關文章!

相關文章

  • java實現(xiàn)基于SMTP發(fā)送郵件的方法

    java實現(xiàn)基于SMTP發(fā)送郵件的方法

    這篇文章主要介紹了java實現(xiàn)基于SMTP發(fā)送郵件的方法,實例分析了java基于SMTP服務發(fā)送郵件的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • spring boot 中設置默認網(wǎng)頁的方法

    spring boot 中設置默認網(wǎng)頁的方法

    這篇文章主要介紹了spring boot 中設置默認網(wǎng)頁的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Springboot 中使用 Aop代碼實戰(zhàn)教程

    Springboot 中使用 Aop代碼實戰(zhàn)教程

    AOP的編程思想是把對類對象的橫切問題點,從業(yè)務邏輯中分離出來,從而達到解耦的目的,增加代碼的復用性,提高開發(fā)效率,這篇文章主要介紹了Springboot中使用Aop代碼實戰(zhàn)教程,需要的朋友可以參考下
    2023-07-07
  • 超全面的SpringBoot面試題含答案

    超全面的SpringBoot面試題含答案

    這篇文章主要收錄了44道面試中經(jīng)常被問的SpringBoot問題,不管你是正在求職的新手還是已經(jīng)工作很久的高手,這篇關于SpringBoot的面試題總結一定會讓你有新的理解,讓我們一起來看看吧
    2023-03-03
  • Java基礎知識之Java語言概述

    Java基礎知識之Java語言概述

    這篇文章主要介紹了Java基礎知識之Java語言概述,本文介紹了Java語言相關的基礎知識、歷史介紹、主要應用方向等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • Spring基于AspectJ的AOP開發(fā)案例解析

    Spring基于AspectJ的AOP開發(fā)案例解析

    這篇文章主要介紹了Spring的基于AspectJ的AOP開發(fā),AspectJ是一個基于Java語言的AOP框架,使用AspectJ需要導入Spring?AOP和AspectJ相關jar包,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Springboot?上傳文件或頭像(MultipartFile、transferTo)

    Springboot?上傳文件或頭像(MultipartFile、transferTo)

    本文主要介紹了Springboot?上傳文件或頭像(MultipartFile、transferTo),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • java實現(xiàn)Redisson看門狗機制

    java實現(xiàn)Redisson看門狗機制

    redission看門狗機制是解決分布式鎖的續(xù)約問題,本文就來詳細的介紹一下java實現(xiàn)Redisson看門狗機制,具有一定的參考價值,感興趣的可以了解一下
    2024-09-09
  • maven利用tomcat插件部署遠程Linux服務器的步驟詳解

    maven利用tomcat插件部署遠程Linux服務器的步驟詳解

    Maven已經(jīng)是Java的項目管理常用方式,下面這篇文章主要給大家介紹了關于maven利用tomcat插件部署遠程Linux服務器的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-11-11
  • @DynamicUpdate //自動更新updatetime的問題

    @DynamicUpdate //自動更新updatetime的問題

    這篇文章主要介紹了@DynamicUpdate //自動更新updatetime的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

灵武市| 塔城市| 朝阳区| 缙云县| 武城县| 台山市| 辽阳县| 青州市| 宁乡县| 扎赉特旗| 武平县| 承德县| 兴安县| 鄂托克前旗| 凤庆县| 弥勒县| 松江区| 弥渡县| 普宁市| 茂名市| 东城区| 仁化县| 大化| 崇阳县| 工布江达县| 崇文区| 阳西县| 醴陵市| 达孜县| 泽州县| 铜陵市| 墨玉县| 南宫市| 新乐市| 涞水县| 灵山县| 姚安县| 岳阳市| 灵璧县| 五家渠市| 南汇区|