繁体   English   中英

java.util.LinkedList的toString()方法的位置

[英]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(' ');
    }
}

LinkedListjava.util.AbstractCollection继承了toString()的实现,它只是对集合中的对象调用toString (所有对象都从Object ,所以它可以调用它。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM