Java toString方法(对象)

时间:2010-10-13 04:45:42

标签: java string object

class Position {

    private double x,y;
    private int id;

    public String toString(Position a){

        String words ="(" + a.x + "," +a.y + ")";
        return words;

所以我在这里找到了一个内存地址。我究竟做错了什么?我想获得使用setter设置的x和y的实际值。我也有吸气剂,我试过而不是把a.x放入getX(),但这仍然给了我另一个内存地址。我做错了什么?

4 个答案:

答案 0 :(得分:5)

尝试:

public String toString(){

您拥有的代码是添加新方法,而不是覆盖toString的现有无参数Object方法。这意味着旧方法仍然是被调用的方法,它会给出你正在看到的输出。

答案 1 :(得分:3)

你实际上并没有覆盖toString;相反,你通过定义一个具有相同名称但需要不同参数的方法来重载它。您没有将Position传递给toString;它应该引用当前实例。

答案 2 :(得分:2)

作为其他帖子的补充,为什么您认为无论如何都需要将Position的引用传递给方法toString()。毕竟,该方法存在于同一个类Position中。你可以直接使用变量/ properties而不需要像这样的任何引用。

  public String toString(){
        return "(" + x + "," + y + ")";
  }

或者,如果您想特别提供参考,那么您可以这样做,

  public String toString(){
        return "(" + this.x + "," + this.y + ")";
  }

我在重构后将方法设为一个衬垫。

如果您有兴趣知道哪些版本的人更喜欢,请参阅here, when to use this。这是关于how overriding works in Java的教程/解释。

答案 3 :(得分:0)

因为它是一个家庭作业,我会请你逐步调试一下。即使您希望它也这样做,也不会调用您的方法。 (toString()和toString(Someobject)是不同的。