@Data和@Getter与@Setter区别

编程教程 > Java (8) 2025-04-01 15:18:33

Lombok插件安装

@Data和@Getter与@Setter都是lombok插件的注解,用于简单对象的增强编译实现。

maven pom引入文件

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

 

@Getter @Setter 使用效果

源码参考:

@Getter
@Setter
public class Student {
   public String name;
   public int age;
}

编译后再反编译查看:

public class Student {
    public String name;
    public int age;
 
    public Student() {
    }
 
    public String getName() {
        return this.name;
    }
 
    public int getAge() {
        return this.age;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
}

可以看到@Getter和@Setter仅对对象的属性进行了get set方法填充

 

@Data效果

源码:

@Data
public class Student {
   public String name;
   public int age;
}

编译后:

public class Student {
    public String name;
    public int age;
 
    public Student() {
    }
 
    public String getName() {
        return this.name;
    }
 
    public int getAge() {
        return this.age;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof Student)) {
            return false;
        } else {
            Student other = (Student)o;
            if (!other.canEqual(this)) {
                return false;
            } else {
                Object this$name = this.getName();
                Object other$name = other.getName();
                if (this$name == null) {
                    if (other$name == null) {
                        return this.getAge() == other.getAge();
                    }
                } else if (this$name.equals(other$name)) {
                    return this.getAge() == other.getAge();
                }
 
                return false;
            }
        }
    }
 
    protected boolean canEqual(Object other) {
        return other instanceof Student;
    }
 
    public int hashCode() {
        int PRIME = true;
        int result = 1;
        Object $name = this.getName();
        int result = result * 59 + ($name == null ? 43 : $name.hashCode());
        result = result * 59 + this.getAge();
        return result;
    }
 
    public String toString() {
        return "Student(name=" + this.getName() + ", age=" + this.getAge() + ")";
    }
}

可以看到@Data不仅包括了@Setter和@Getter的部分,还增强实现了toString hashCode canEqual equals 方法

 

 

 

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
Lombok插件安装@Data和@Getter与@Setter都是lombok插件的注解,用于简单对象的增强编译实现。maven pom引入文件&lt;depende
概述Java简单对象使用了@Data注解,前端请求报错:JSON parse error: Cannot construct instance of `com.
概要说明在Lombok中,单独使用@Data 和@Builder会导致无参构造丢失。问题解析:单独使用@Data注解,是会生成无参构造方法的单独使用@Build
创建maven项目添加依赖方便开发,添加一些开发工具依赖,比如 lombok Swing UI开发创建Hello UI在src/main/java/包名下有件菜
一、配置idea setter模板首先 按快捷键   Alt+Insert 弹出generater 对话框​弹出对话框​点击箭头指的位置,弹出以下内容:​上面首先点击绿色的‘+’号添加一个模板,...
spring validate 验证List集合演示用类User/Addressimport lombok.Data; import javax.validation.constraint...
spring data redis设置缓存的过期时间,spring data redis更新缓存的过期时间
1.alt+insert可以弹出Getter and Setter构造函数实现接口方法重写父类方法2.CTRL+F12 弹出所有方法 可以弹出当前文件的方法3.CTRL+ALT+B / CTRL...
Spring data-mongodb ID自增长注解实现,mongodb ID自增长
通过之前的一些文章spring boot 2.3 hibernate validate框架未引入-xqlee (blog.xqlee.com)Spring boot 参数分组校验-xqlee (...
Java编程中使用spring boot1.5.2框架整合spring data mongodb10.1,来使用mongodb数据库
前言       在本教程中,我们将了解Retrofit 的基础知识以和创建一个android HTTP client请求REST API
今天我又回到了更多的Cassandra和Java集成中,重点关注使用Datastax Java驱动程序,而不是我已经写了很多的Spring Data Cassandra
问题Caused by: java.sql.BatchUpdateException: Data truncation: Incorrect datetime value: '1955-05-0...
Java编程之Spring Boot 文件上传 REST风格API ajax方式