[英]Location of toString() Method of java.util.LinkedList
我正在研究 LinkedLists 并想检查 Java 的实现。
但是,我有一些问题。
我看到我可以打印 java.util.LinkedList 的内容。
像这样:
LinkedList ll = new LinkedList<Integer>();
ll.add(1);
ll.add(2);
System.out.println(ll);
// prints "[1, 2]"
但是,我找不到LinkedList 的toString() 方法。
Java 是怎么做到的? 它如何触发它拥有的每种数据类型的 toString() 方法?
JavaDoc 告诉你哪个方法在哪个父 class 中实现,例如AbstractCollection
中的那些
Methods declared in class java.util.AbstractCollection
containsAll, isEmpty, removeAll, retainAll, toString
方式是LinkedList > AbstractSequentialList > AbstractList > AbstractCollection
public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
>> public abstract class AbstractSequentialList<E> extends AbstractList<E> {
>>> public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
您最终得到AbstractCollection.toString
迭代每个项目以调用它们的 toString 并用逗号连接它们,整个包含在括号中
public String toString() {
Iterator<E> it = iterator();
if (! it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = it.next();
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',').append(' ');
}
}
LinkedList
从java.util.AbstractCollection
继承了toString()
的实现,它只是对集合中的对象调用toString
。 (所有对象都从Object
,所以它可以调用它。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.