【问题标题】:Can a Java class have an instance of type itself? [duplicate]Java 类可以有类型本身的实例吗? [复制]
【发布时间】:2018-09-10 15:26:21
【问题描述】:

我遇到了如下代码sn-p,用于实现链表:

public static class Element<AnyType> {
    private AnyType data; 
    private Element<AnyType> next; // reference to the next node
    Element(AnyType d, Element<AnyType> e) {
        data = d;
        next = e;
    }
}

谁能告诉我这怎么可能? Java 类(在我的例子中是 Element)如何拥有自己类型的实例变量?

【问题讨论】:

  • 我不确定我是否明白是什么让你失望了。为什么你认为它不应该能够发生?
  • 这里AnyType是泛型类型;并且一个类很可能包含对其自身类型实例的引用。
  • 这不是 C++; Element&lt;AnyType&gt; 具有实例变量 Element&lt;AnyType&gt; next 并不意味着 Element 的内存布局必须在物理上包含另一个 Element 的内存布局,并且无限。

标签: java class oop conceptual


【解决方案1】:

Java 类(在我的例子中是 Element)如何拥有自己类型的实例变量?

其实没有。 Java 只有原始变量和引用变量,没有实例。这意味着next 只是一个引用,最初是null

private AnyType data; // a reference to an AnyType object
private Element<AnyType> next; // reference to the next node

顺便说一句,评论确实声明它是引用而不是实例。

为什么没有像 C++ 中的特殊符号?因为在 Java 中没有其他选择,所以没有理由拥有 &amp; 或类似的。

【讨论】:

    猜你喜欢
    • 2015-10-07
    • 2018-10-14
    • 2012-10-24
    • 2021-12-08
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 2015-11-12
    • 2022-01-25
    相关资源
    最近更新 更多