跳转至

Java 中的 Get 和 Set 方法

简介

在 Java 编程中,Get 和 Set 方法是面向对象编程中非常重要的概念。它们提供了一种访问和修改类中私有属性的安全且规范的方式。通过使用 Get 和 Set 方法,我们可以实现数据的封装,使得类的内部数据结构对外部代码隐藏,同时又允许外部代码通过这些方法来获取和修改对象的状态。

目录

  1. 基础概念
  2. 使用方法
    • 创建 Get 方法
    • 创建 Set 方法
  3. 常见实践
    • 数据验证
    • 简化代码结构
  4. 最佳实践
    • 遵循命名规范
    • 保持方法的原子性
    • 结合 Lombok 使用
  5. 小结
  6. 参考资料

基础概念

Get 方法(也称为访问器方法)用于获取对象的属性值。通常命名为 get 加上属性名,并且返回属性的类型。例如,如果有一个名为 name 的字符串属性,那么对应的 Get 方法可能是 getName()

Set 方法(也称为修改器方法)用于设置对象的属性值。命名通常为 set 加上属性名,方法接受一个参数,参数类型与属性类型相同。例如,对于 name 属性,Set 方法可能是 setName(String name)

使用方法

创建 Get 方法

以下是一个简单的类,包含一个私有属性和对应的 Get 方法:

public class Person {
    private String name;

    // Get 方法
    public String getName() {
        return name;
    }
}

在上述代码中,name 是一个私有属性,只能在 Person 类内部访问。getName() 方法提供了一种外部代码获取 name 属性值的方式。

创建 Set 方法

下面我们为 Person 类添加一个 Set 方法:

public class Person {
    private String name;

    // Get 方法
    public String getName() {
        return name;
    }

    // Set 方法
    public void setName(String name) {
        this.name = name;
    }
}

setName(String name) 方法中,参数 name 被赋值给类的私有属性 namethis 关键字用于区分局部变量 name 和类的属性 name

常见实践

数据验证

在 Set 方法中进行数据验证是一个常见的实践。例如,我们可以确保 name 属性不为空:

public class Person {
    private String name;

    // Get 方法
    public String getName() {
        return name;
    }

    // Set 方法,带有数据验证
    public void setName(String name) {
        if (name != null &&!name.isEmpty()) {
            this.name = name;
        } else {
            throw new IllegalArgumentException("Name cannot be null or empty");
        }
    }
}

这样,当外部代码尝试设置一个无效的 name 时,会抛出 IllegalArgumentException 异常。

简化代码结构

Get 和 Set 方法可以简化代码结构,使得代码更易读和维护。例如,在一个较大的类中,如果直接访问私有属性,可能会导致代码混乱。通过使用 Get 和 Set 方法,可以将属性的访问和修改逻辑集中在几个方法中。

最佳实践

遵循命名规范

遵循标准的命名规范,即 getset 加上属性名,并且属性名首字母大写。这样可以提高代码的可读性和可维护性,让其他开发者能够快速理解代码的意图。

保持方法的原子性

Get 和 Set 方法应该尽可能保持原子性,即一个方法只做一件事情。例如,Get 方法只返回属性值,不应该包含复杂的业务逻辑。Set 方法只负责设置属性值,同时进行必要的数据验证。

结合 Lombok 使用

Lombok 是一个可以减少样板代码的库。通过使用 Lombok 的 @Getter@Setter 注解,可以自动生成 Get 和 Set 方法,减少手动编写代码的工作量。

首先,在项目的 pom.xml 文件中添加 Lombok 依赖:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version>
    <scope>provided</scope>
</dependency>

然后,在类上使用注解:

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Person {
    private String name;
}

这样,Lombok 会在编译时自动生成 getName()setName(String name) 方法。

小结

Get 和 Set 方法是 Java 编程中实现数据封装和访问控制的重要手段。通过合理使用这些方法,我们可以提高代码的安全性、可读性和可维护性。在实际开发中,遵循命名规范、保持方法的原子性,并结合工具(如 Lombok)可以更高效地编写代码。

参考资料