【问题标题】:Implementing an ArrayQueue in java need toString method在java中实现一个ArrayQueue需要toString方法
【发布时间】:2013-11-14 23:19:11
【问题描述】:

我有一个 ArrayQueue 我正在为 java 语言中的一个类实现。

我将事务对象存储在 ArrayQueue 中,但我陷入了 display() 方法(又名我自己的 toString())。但它只是返回引用。

这是我的方法:

//display the elements in the current queue
public String display() {

  String result = "";

  if(isEmpty()) {
        throw new EmptyQueueException("Queue is empty.");
  } else {
     for (int i = 0; i < count; i++) {
       result += "[" + Q[(front + i) % capacity] + "] ";
     }
  }

  return result;
}

这是否意味着我的对象需要一个 toString() 方法并将其命名为:System.out.println(arrayqueue.display().toString())

【问题讨论】:

    标签: java arrays queue


    【解决方案1】:

    如果你为你的ArrayQueue 类覆盖toString(),你可以使用:

    System.out.println(arrayqueue);
    

    但如果你选择称它为display(),那么是的,你需要这个:

    System.out.println(arrayqueue.display())
    

    运行时环境应该如何知道您想要字符串表示而不是对象引用?

    【讨论】:

      【解决方案2】:

      这是否意味着我的对象需要一个 toString() 方法并将其称为:System.out.println(arrayqueue.display().toString())?

      不,因为display() 返回一个Stringarrayqueue.display() 应该足够了。您是否正在尝试打印arrayqueuetoString() 值?不覆盖toString(),默认返回类名和哈希码。

      【讨论】:

        【解决方案3】:

        当你调用代码时

        result += "[" + Q[(front + i) % capacity] + "] ";
        

        您正在对包含在 Q 数组中该位置的对象调用 toString() 方法。默认对象 toString() 将打印其内存位置。如果您的对象已经声明了要打印的不同数据,例如要打印对象类名的 object.getClass(),则您不必重写 toString() 而是在上面的代码中调用该方法。当然,如果您想要一个自定义字符串比它的内存位置更能代表您的对象,那么在该对象的类中覆盖 toString() 会很好。

        【讨论】:

          猜你喜欢
          • 2016-12-02
          • 1970-01-01
          • 2021-09-18
          • 1970-01-01
          • 2021-12-25
          • 1970-01-01
          • 1970-01-01
          • 2012-02-23
          • 1970-01-01
          相关资源
          最近更新 更多