[英]Java: Iterative method returning an object
出于好奇,我来写下面的方法:
public Object getObject() {
return this.getObject();
}
为什么Java允许我写这个? 此方法永远不会返回任何Object
并且会导致StackOverflow Error
。
它不应该阻止你这样做 - 这只是无底的递归,但它可能是一个常规的。 编译器不需要去理解代码来猜测它是否正确定义了递归。
事情就像这样总是在运行时导致错误(而不是编译时)。 在许多情况下,可能已经完成了类似的 (在递归方面) 类似的东西。
Java没有关于您的代码是否有意义的概念。 如果您决定在没有退出条件的情况下调用自己的方法,它将递归,直到它用完堆栈空间。
如果没有方法调用自己的能力,就不可能进行递归。
更轻松一点,一个理智的开发人员扩展具有此方法的类可能会做一些有用的事情,因为该方法无论如何都是公开的。 所以编译器不需要反对;-)
1.我不认为编译器会对你的上述代码给出许可有任何异议。我认为它只是如何编写和使用recursion
。
2.这里的代码会在runtime
产生问题 ,因此它完全是程序员编写的逻辑问题,所以它不会打扰编译器,但在运行期间会抛出错误......
如果编译器会这么聪明.....那么终结者电影将是一个接近现实.....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.