出于好奇,我开始编写以下方法:
public Object getObject() {
return this.getObject();
}
为什么Java允许我写这个?此方法永远不会返回任何Object
内容,并且会导致StackOverflow Error
.
出于好奇,我开始编写以下方法:
public Object getObject() {
return this.getObject();
}
为什么Java允许我写这个?此方法永远不会返回任何Object
内容,并且会导致StackOverflow Error
.
它不应该阻止你这样做——这只是无底递归,但它可能是一个普通的递归。编译器不需要去理解代码来猜测它是否正确定义了递归。
像这样的事情总是在运行时(而不是编译时)导致错误。在许多情况下,可以完成类似的事情(就递归而言),这本来是完全有效的。
Java 不知道您的代码是否有意义。如果您决定要让一个方法在没有退出条件的情况下自行调用,它将递归,直到堆栈空间用完。
没有方法调用自身的能力,递归是不可能的。
稍微轻松一点,扩展具有此方法的类的理智开发人员可能会做一些有用的事情,因为该方法无论如何都是公共的。所以编译器不需要反对;-)
1.我认为编译器不会反对您对上述代码进行许可..我认为它是如何recursion
编写和使用的。
2.这里这段代码在运行时会出问题,runtime
完全是程序员写的逻辑有问题,不会打扰编译器,但是运行时会报错……
如果编译器能这么聪明......那么终结者电影就会接近现实......