对象内部的对象

Kev*_*vMo 3 oop

当一个对象本身有一个相同类型的对象时,它叫什么?

例:

public class Foo{

     public Foo myFoo;

}
Run Code Online (Sandbox Code Playgroud)

Kib*_*bee 14

我认为没有具体的名称.虽然这个概念用于许多不同的常见编程结构中.例如,当表示图形,树或链表时,节点通常具有对它们链接/连接的其他节点的引用.


Edm*_*und 5

这意味着它Foo是一个"递归数据结构".这样的例子是树,图,链表等.没有很多重要的程序编写不使用至少一些递归结构,例如在任何SQL服务器实现中,执行的查询计划很常见以类似的方式定义.作为一个很小的例子,该WHERE子句可能被转换为FilterNode对从其他一些接收的数据Node(如表扫描)的行为:

public interface Node { }

public class FilterNode implements Node {
    public Node underlyingNode;
    public Condition filterCondition;
}
Run Code Online (Sandbox Code Playgroud)

在许多情况下,整体结构形成一个有向无环图,这意味着它可以很容易地递归地安全地遍历它.但如果它有周期,那么你需要小心你不要进入无限递归(这是上面的另一个答案幽默地警告).