覆盖 Java 中的 toString 方法

Rupam Yadav 2023年10月12日
覆盖 Java 中的 toString 方法

我们经常在 Java 中使用字符串,因为它们是每个程序的重要组成部分。在本教程中,我们将使用一个简单的示例来了解如何覆盖 Java 中的 tostring() 方法以更好地理解该概念。

在 Java 中使用 @Override 注释覆盖 toString() 方法

toString() 方法是 Object 类的一部分,它是 Java 中每个类的超类。这意味着每个类都有自己的 toString() 方法。但是我们不会每次都从默认的 toString() 方法中获得所需的输出。这是我们必须覆盖该方法并根据我们的需要对其进行自定义的时候。

为了演示如何覆盖 toString() 方法,我们将看到两个示例,一个没有覆盖 toString() 方法,另一个覆盖了该方法。

在下面的示例中,我们有一个类 ExampleClass,其中包含在构造函数中初始化的三个变量。当我们使用传递的参数创建 ExampleClass 类的对象然后打印该对象时,我们会得到一个对人类没有意义且不可读的对象。这是因为,当打印 exampleClass 时,会调用其默认的 toString()。但是我们想将变量的值打印为字符串。为此,我们将在下一个示例中覆盖 toString() 方法。

public class OverrideToString {
  public static void main(String[] args) {
    ExampleClass exampleClass = new ExampleClass("Alex", "Novel", 24);

    System.out.println(exampleClass);
  }
}

class ExampleClass {
  String firstName;
  String lastName;
  int age;

  ExampleClass(String firstName, String lastName, int age) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
  }
}

输出:

ExampleClass@37bba400

在下面的代码中,我们采用与之前相同的示例,但这次我们使用 @Override 注释覆盖了 toString() 方法,并将方法名称写为 toString(),返回类型为 String。我们可以手动执行此操作,也可以使用许多 IDE 中包含的快捷方式。

由于该方法返回一个字符串,我们必须构造它。我们将变量与 String 连接起来形成一个 String。最后,当我们创建一个 exampleClass 的对象并打印它时,我们会得到一个字符串的输出,其中包含传递的变量的值。这是因为我们重写了 toString() 方法来指定我们自己的实现。

public class OverrideToString {
  public static void main(String[] args) {
    ExampleClass exampleClass = new ExampleClass("Alex", "Novel", 24);

    System.out.println(exampleClass);
  }
}

class ExampleClass {
  String firstName;
  String lastName;
  int age;

  ExampleClass(String firstName, String lastName, int age) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
  }

  @Override
  public String toString() {
    return "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + ", age=" + age;
  }
}

输出:

firstName='Alex', lastName='Novel', age=24
作者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相关文章 - Java Override