Come ottenere il nome di una classe senza il pacchetto?


199

In C # abbiamo Type.FullNamee Type.Nameper ottenere il nome di un tipo (classe in questo caso) con o senza lo spazio dei nomi (pacchetto in java-world).

Qual è l'equivalente di Java Type.Name?

Chiaramente ci deve essere un modo migliore rispetto all'utilizzo Class.getName()e alla rimozione manuale del nome del pacchetto.


1
Ho fatto una rapida ricerca su questo e non sono rimasto impressionato dai primi risultati che ho trovato su Google, quindi considera questo come un omaggio.
Ola Herrdahl,

5
Dimentica Google! Il primo posto dove cercare le risposte sulla libreria di classi standard Java sono i documenti API Java (aka javadocs): java.sun.com/javase/reference/api.jsp
Stephen C

Risposte:


359

Class.getSimpleName()

Restituisce il nome semplice della classe sottostante come indicato nel codice sorgente. Restituisce una stringa vuota se la classe sottostante è anonima.

Il nome semplice di un array è il nome semplice del tipo di componente con "[]" aggiunto. In particolare il nome semplice di un array il cui tipo di componente è anonimo è "[]".

In realtà sta togliendo le informazioni del pacchetto dal nome, ma questo è nascosto da te.


Inoltre mappa il nome interno di una classe anonima su una stringa vuota e fa cose con i nomi delle classi di array.
Stephen C,

4
Non sapevo che potesse restituire una stringa vuota e IMHO è un difetto di progettazione. Se non esiste un nome semplice, dovrebbe generare un'eccezione.
finnw,

20

La seguente funzione funzionerà in JDK versione 1.5 e successive.

public String getSimpleName()

14

Se si utilizza StackTraceElement, utilizzare:

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

System.out.println(simpleClassName);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.