Comment obtenir le nom d'une classe sans le package?

199

En C #, nous avons Type.FullNameet Type.Namepour obtenir le nom d'un type (classe dans ce cas) avec ou sans l'espace de noms (package dans java-world).

À quoi l'équivalent java Type.Name?

De toute évidence, il doit y avoir un meilleur moyen que de l'utiliser Class.getName()et de le supprimer manuellement du nom du package.

Ola Herrdahl
la source
1
J'ai fait une recherche rapide à ce sujet et je n'ai pas été impressionné par les premiers résultats que j'ai trouvés sur Google, alors considérez cela comme un cadeau.
Ola Herrdahl
5
Oubliez Google! Les premiers documents à rechercher sur la bibliothèque de classes Java standard sont les documents de l'API Java (alias javadocs): java.sun.com/javase/reference/api.jsp
Stephen C

Réponses:

359

Class.getSimpleName()

Renvoie le nom simple de la classe sous-jacente tel qu'il est indiqué dans le code source. Renvoie une chaîne vide si la classe sous-jacente est anonyme.

Le nom simple d'un tableau est le nom simple du type de composant avec "[]" ajouté. En particulier, le nom simple d'un tableau dont le type de composant est anonyme est "[]".

Il supprime en fait les informations du package du nom, mais cela vous est caché.

Bozho
la source
Il mappe également le nom interne d'une classe anonyme à une chaîne vide et remplit les noms de classe de tableau.
Stephen C
4
Je ne savais pas qu'il pouvait retourner une chaîne vide, et à mon humble avis, c'est un défaut de conception. S'il n'y a pas de nom simple, il devrait lever une exception.
finnw
20

La fonction suivante fonctionnera dans JDK version 1.5 et supérieure.

public String getSimpleName()
identy
la source
14

Si vous utilisez un StackTraceElement, utilisez:

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

System.out.println(simpleClassName);
Fidel
la source