Getting the class name from a static method in Java
How can one get the name of the class from a static method in that class. For example
public class MyClass {
public static String getClassName() {
String name = ????; // what goes here so the string "MyClass" is returned
return name;
}
}
To put it in context, I actually want to return the class name as part of a message in an exception.
Solution 1:
In order to support refactoring correctly (rename class), then you should use either:
MyClass.class.getName(); // full name with package
or (thanks to @James Van Huis):
MyClass.class.getSimpleName(); // class name and no more
Solution 2:
In Java 7+ you can do this in static method/fields:
MethodHandles.lookup().lookupClass()
Solution 3:
Do what @toolkit says. Do not do anything like this:
return new Object() { }.getClass().getEnclosingClass();
(Edit: Or if you are using a Java version that came out well after this answer was originally written, @Rein.)