我有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())
?
答案 0 :(得分:1)
如果您覆盖toString()
课程的ArrayQueue
,则可以使用:
System.out.println(arrayqueue);
但如果您选择将其称为display()
,那么您需要这样:
System.out.println(arrayqueue.display())
运行时环境如何知道你想要字符串表示而不是对象引用?
答案 1 :(得分:1)
这是否意味着我需要为我的对象使用toString()方法并将其调用为:System.out.println(arrayqueue.display()。toString())?
不,由于display()
返回String
,arrayqueue.display()
就足够了。您是尝试打印toString()
arrayqueue
的值吗?如果不重写toString()
,它将默认返回类名和哈希码。
答案 2 :(得分:1)
调用代码时
result += "[" + Q[(front + i) % capacity] + "] ";
您正在Q数组中该位置包含的对象上调用toString()方法。默认对象toString()将打印其内存位置。如果您的对象已经声明了要打印的不同数据,例如object.getClass()来打印对象类名,那么您不必重写toString(),而是在上面的代码中调用该方法。当然,如果你想要一个更好地代表你的对象的自定义字符串而不是它的内存位置,那么在该对象的类中覆盖toString()就好了。