为什么这在Java中是可能的:
this.getClass().getClass().getClass().getClass()...
Run Code Online (Sandbox Code Playgroud)
为什么会有这种无限递归?
只是好奇.
das*_*ght 10
这里没有无限递归:getClass()返回一个java.lang.Class对象,它本身就是一个java.lang.Object对象,因此它支持getClass()方法.在第二次打电话给getClass()你后,无论你打多少次,都会得到相同的结果getClass().
对象Class仍然是对象,并且getClass由于 的存在,您可以调用任何对象Object#getClass。所以你得到:
this.getClass(); // Class<YourClass>
this.getClass().getClass(); // Class<Class<YourClass>>
this.getClass().getClass().getClass(); //Class<Class<Class<YourClass>>>
Run Code Online (Sandbox Code Playgroud)
最终,对于如此庞大的程序,您将耗尽堆栈内存、时间或磁盘空间,或者达到 Java 内部限制。
| 归档时间: |
|
| 查看次数: |
3004 次 |
| 最近记录: |