【问题标题】:Self referential classes and class loader in javajava中的自引用类和类加载器
【发布时间】:2019-01-22 03:38:22
【问题描述】:

在Java中的以下类定义中

public class Node{

private Node next;
//other fields

// getter setter 

}

在上面的类定义类中包含一个指向自我类型的链接next

正如我所见,这个类是如何加载到 JVM 中的,这是一个递归定义?

【问题讨论】:

  • next 的值不太可能链接到 self(又名this)。它更有可能链接到该类的另一个 instance,或者不链接到任何东西 (null)。

标签: java class jvm self-reference


【解决方案1】:

类加载器只加载一个类一次。类的next字段简单的表示,名为next的字段是Node类型。(JVM的静态区)
它是可以具有递归关系的实例。 (JVM的堆区)

Node node1 = new Node();    
node1.setNext(node1);

在这种情况下,Heap 区域中只创建了一个实例。
堆栈区的next会指向node1实例的地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多