Java:返回对象的迭代方法

时间:2012-09-09 13:23:48

标签: java recursion halting-problem

出于好奇,我来写下面的方法:

public Object getObject() {
    return this.getObject();        
}

为什么Java允许我写这个?此方法永远不会返回任何Object,并会产生StackOverflow Error

5 个答案:

答案 0 :(得分:6)

它不应该阻止你这样做 - 这只是无底的递归,但它可能是一个常规的。编译器不需要去理解代码来猜测它是否正确定义了递归。

答案 1 :(得分:2)

这样的事情总是会导致运行时出错(而不是编译时)。在许多情况下,可以完成某些类似的(就递归而言),这些实际上是完全有效的。

答案 2 :(得分:1)

Java没有关于您的代码是否有意义的概念。如果您决定在没有退出条件的情况下调用自己的方法,它将递归,直到它用完堆栈空间。

如果没有方法调用自己的能力,就不可能进行递归。

答案 3 :(得分:0)

在一个较轻松的说明中,一个理智的开发人员扩展具有此方法的类可能会做一些有用的事情,因为该方法无论如何都是公开的。所以编译器不需要对象; - )

答案 4 :(得分:0)

1。认为编译器会对您的上述代码作出任何异议。我认为recursionruntime书面和使用。

2。这个代码会在{{1}}期间导致问题,因此它完全是程序员编写的逻辑问题,所以它赢了不要打扰编译器,但在运行期间会抛出错误......

如果编译器本来就这么聪明......那么终结者电影本来就是现实......