繁体   English   中英

从另一个 class 调用方法,而无需在 java 中进行初始化

[英]Call a method from another class without initialization in java

我对下面的代码有点困惑。 据我了解, private ListElement<E> head与说int head是一回事。 如果这是真的,那么就不能在不初始化的情况下从外部 class 调用方法,因此head.setPrev()在您说ListElment<E> head = new ListElment<>()之前将不起作用。 这与下面的代码相矛盾。 我一定是对 java 有什么误解。Cloud 有人指出了吗? 提前致谢

public class DoublyLinkedList<E> {

private ListElement<E> head;
private ListElement<E> tail;



public DoublyLinkedList() {
    head = null;
    tail = null;
}

public void addToHead(E value) {
    ListElement<E> e = new ListElement<>(value);

    if (!isEmpty()) {
        e.setNext(head);
        head.setPrev(e);
    } else { // empty
        tail = e;
    }

    head = e;
}

您省略了isEmpty()的代码。

假设一个合理的实现,那么如果isEmpty()返回false ,那么可以保证head不是 null,因为如果它不为空,列表中必须至少有一个元素。

head是对ListElement object 的引用。它开始初始化为null 在第一次调用addToHead()时,对isEmpty() ) 的调用返回true ,因此执行 if-then-else 的else分支。 最终结果是,在第一次调用之后, headtail现在都引用刚刚创建的元素。

“then”分支仅在列表不为空时执行,在这种情况下,根据定义, head不能是 null。

暂无
暂无

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

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