0

私はArrayQueueJava言語のクラスに実装しています。

トランザクション オブジェクトを に格納していますが、メソッド (つまり、自分の)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())か?

4

3 に答える 3

1

コードを呼び出すと

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

Q 配列のその場所に含まれるオブジェクトで toString() メソッドを呼び出しています。デフォルトのオブジェクト toString() は、そのメモリ位置を出力します。object.getClass() など、出力するオブジェクトによって既に宣言されている別のデータがある場合は、たとえば、オブジェクトのクラス名を出力するために toString() をオーバーライドする必要はありませんが、代わりに上記のコード内でそのメソッドを呼び出します。もちろん、メモリの場所よりもオブジェクトをより適切に表すカスタム文字列が必要な場合は、そのオブジェクトのクラス内で toString() をオーバーライドすることをお勧めします。

于 2013-11-14T23:45:03.723 に答える
1

クラスをオーバーライドtoString()する場合ArrayQueueは、次を使用できます。

System.out.println(arrayqueue);

しかし、それを呼び出すことを選択した場合display()は、はい、これが必要です:

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

オブジェクト参照の代わりに文字列表現が必要であることをランタイム環境が知るには、他にどのような方法があるでしょうか?

于 2013-11-14T23:21:06.513 に答える