Getting the name of a sub-class from within a super-class
class, java, subclass, super, superclass
Solution
Not possible. Static methods are not runtime polymorphic in any way. It's absolutely impossible to distinguish these cases:
System.out.println(Entity.getClass());
System.out.println(User.getClass());
They compile to the same byte code (assuming that the method is defined in `Entity`).
Besides, how would you call this method in a way where it would make sense for it to be polymorphic?
Problem
Let's say I have a base class named `Entity`. In that class, I have a static method to retrieve the class name: ``` class Entity { public static String getClass() { return Entity.class.getClass(); } } ``` Now I have another class extend that. ``` class User extends Entity { } ``` I want to get the class name of User: ``` System.out.println(User.getClass()); ``` My goal is to see "com.packagename.User" output to the console, but instead I'm going to end up with "com.packagename.Entity" since the Entity class is being referenced directly from the static method. If this wasn't a static method, this could easily be solved by using the `this` keyword within the `Entity` class (i.e.: `return this.class.getClass()`). However, I need this method to remain static. Any suggestions on how to approach this?