【问题标题】:How use a overridden toString() method in java如何在 java 中使用重写的 toString() 方法
【发布时间】:2013-11-07 12:24:59
【问题描述】:

我必须重写 toString() 方法,我已经这样做了

public String toString() {
     String str = "The zoo is capable of keeping " + park.length + "animals\nThe following is the list of animals currently in the zoo.";
        for(int i = 0; i < park.length; i++)
            str += '\n' + "cage " + i + " status: " + park[i];

        return str;
}

并创建了另一种打印方法

public void print() {
    System.out.println(park.toString());
}

当我在 main 方法中使用 print 方法时,出现以下情况

[LAnimal;@3a67ad79

现在,有人向我建议,我实际上可能正在使用默认的 toString() 方法,因此带来了实际的地址内存。

你们认为问题是什么?

【问题讨论】:

  • 我们需要更多数据。 toString() 在哪个类中实现? print 中的 park 是什么? LAnimal 是什么?
  • @whoAmI 是对的,你一定是在那边搞错了。

标签: java overriding tostring


【解决方案1】:

您不能为数组覆盖toString,请改用Arrays#toString

【讨论】:

    【解决方案2】:

    park.length 的使用和应用程序输出看来,park 是一个Animal 类型的数组。 因此

    System.out.println(park.toString());
    

    应该是

    System.out.println(Arrays.toString(park));
    

    (因为Arrays 不要覆盖Object#toString 方法)

    【讨论】:

      【解决方案3】:

      你必须添加@Override

      @Override public String toString() {
           String str = "The zoo is capable of keeping " + park.length + "animals\nThe following   is     the list of animals currently in the zoo.";
              for(int i = 0; i < park.length; i++)
                  str += '\n' + "cage " + i + " status: " + park[i];
      
          return str;
      }
      

      【讨论】:

        【解决方案4】:

        你在你的toString()方法中打印park[i]

        str += '\n' + "cage " + i + " status: " + park[i];
        
                                                  ^
                                                  |_________ Here you are printing the Object
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-06
          • 1970-01-01
          • 1970-01-01
          • 2013-07-12
          • 2017-08-01
          相关资源
          最近更新 更多