2009-06-16 129 views
3

当对象内部有相同类型的对象时,它会调用什么?对象内部的对象

例子:

public class Foo{ 

    public Foo myFoo; 

} 
+4

对不起,我无法抗拒。 Yo Dawg,我听说你喜欢物体,所以我们把物体放在你的物体上,所以当你反对时你可以反对。 – Kibbee 2009-06-16 23:25:11

+1

kibbee,一个+1还不足以解释我在那个简单的评论里有多少赞扬...... – 2009-06-17 00:29:10

+0

obj ception !!!!! – 2011-08-13 19:02:42

回答

14

我不认为这有任何具体名称。虽然这个概念被用在许多不同的通用编程结构中。例如,当表示图形,树或链接列表时,节点通常具有对其链接/连接到的其他节点的引用。

4

递归遏制.... :)

5

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

public interface Node { } 

public class FilterNode implements Node { 
    public Node underlyingNode; 
    public Condition filterCondition; 
} 

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

1

要添加到Kibbee所说的,这是一种复合图案