gpt4 book ai didi

java - Java 中的自定义 toString()

转载 作者:行者123 更新时间:2023-11-29 09:34:01 29 4
gpt4 key购买 nike

我正在学习做我的 java OCA 测试,使用 Michael Ernest 的书“Java SE7 Programming Essentials”。这是我对以下问题的答案之一的代码:

public class Point3D {
int x, y, z;

public void setX(int x) {
this.x = x;
}

public int getX() {
return this.x;
}

public void setY(int y) {
this.y = y;
}

public int getY() {
return this.y;
}

public void setZ(int z) {
this.z = z;
}

public int getZ() {
return this.z;
}

public String toString(Point3D p) {
String result = p.getX() + "," + p.getY() + "," + p.getZ();
return result;
}

public static void main(String args[]) {
Point3D point = new Point3D();
point.setX(5);
point.setY(12);
point.setZ(13);
System.out.println(point.toString(point));
}
}

我的代码有效,但在最后一行,我认为我以一种奇怪的方式制作了我的代码,难道不应该有一种方法可以只制作 point.toString() 而不是point.toString(point) 返回点的字符串表示?任何人都可以向我解释如何修复它吗?

我确定这是一个简单的答案,只是试图理解它,因为我怀疑它指出了我的 Java 知识中的一个漏洞。

最佳答案

您的方法 public String toString(Point3D p) 没有覆盖 Object.toString() ,这是获取 ObjectString 表示的标准方法。

覆盖它的目的是允许 Object 的任何子类提供对象的适当表示形式作为 String。 Java API 在许多情况下使用此方法,主要是在需要将 Object 转换为 String 时(例如在执行 System.out.println( object),或者执行字符串连接:

String s = "点是"+ pointObject;

按照 ay89 的建议实现它:

@Override
public String toString() {
String result = getX() + "," + getY() + "," + getZ();
return result;
}

请注意@Override的用法注解。如果您在您的方法中使用它,编译器会警告您它的定义有问题。

关于java - Java 中的自定义 toString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15615094/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com