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.


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é.


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()

14

Si vous utilisez un StackTraceElement, utilisez:

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

System.out.println(simpleClassName);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.