233
votes

In C# we have Type.FullName and Type.Name for getting the name of a type (class in this case) with or without the namespace (package in java-world).

What is the java equivalent to Type.Name?

Clearly there must be a better way than using Class.getName() and strip it of the package name manually.

2
I did a quick search on this and was not to impressed by the first results that I found on Google so consider this as a freebie. - Ola Herrdahl
Forget Google! The first place to look for answers about the Java standard class library are the Java API docs (aka javadocs): java.sun.com/javase/reference/api.jsp - Stephen C
For literal answers to the question, see: How to really get the name of a class without the package. - Michael Allan

2 Answers

420
votes

Class.getSimpleName()

Returns the simple name of the underlying class as given in the source code. Returns an empty string if the underlying class is anonymous.

The simple name of an array is the simple name of the component type with "[]" appended. In particular the simple name of an array whose component type is anonymous is "[]".

It is actually stripping the package information from the name, but this is hidden from you.

16
votes

If using a StackTraceElement, use:

String fullClassName = stackTraceElement.getClassName();
String simpleClassName = fullClassName.substring(fullClassName.lastIndexOf('.') + 1);

System.out.println(simpleClassName);