An object
A Class is still an object, and you can call getClass on any object, thanks to the existence of Object#getClass . So you get:
this.getClass(); // Class<YourClass> this.getClass().getClass(); // Class<Class<YourClass>> this.getClass().getClass().getClass(); //Class<Class<Class<YourClass>>>
In the end, you will run out of memory, time or disk space for such a huge program, or have reached the internal Java limit.
source share