2010-04-22 18 views
146

En C# tenemos Type.FullName y Type.Name para obtener el nombre de un tipo (clase en este caso) con o sin el espacio de nombres (paquete en java-world).¿Cómo obtener el nombre de una clase sin el paquete?

¿Cuál es el equivalente de Java a Type.Name?

Claramente, debe haber una mejor manera que usar Class.getName() y quitarle el nombre del paquete manualmente.

+1

lo hice una búsqueda rápida en esto y no iba a impresionado por los primeros resultados que he encontrado en Google por lo que considerar esto como un regalo de promoción. –

+5

¡Olvídate de Google! El ** primer lugar para buscar ** las respuestas sobre la biblioteca de clases estándar de Java son los documentos de la API de Java (también conocidos como javadocs): http://java.sun.com/javase/reference/api.jsp –

Respuesta

267

Class.getSimpleName()

Devuelve el simple nombre de la clase subyacente tal como figura en el código fuente. Devuelve una cadena vacía si la clase subyacente es anónima.

El nombre simple de una matriz es el nombre simple del tipo de componente con "[]" anexado. En particular, el nombre simple de una matriz cuyo tipo de componente es anónimo es "[]".

En realidad, está eliminando la información del paquete del nombre, pero esto está oculto para usted.

+0

. También mapea el interno nombre de una clase anónima a una cadena vacía y hace cosas con nombres de clase de matriz. –

+1

No sabía que podría devolver una cadena vacía, y en mi humilde opinión es una falla de diseño. Si no hay un nombre simple, debe lanzar una excepción. – finnw

15

La siguiente función funcionará en JDK versión 1.5 y superior.

public String getSimpleName() 
10

Si se utiliza un StackTraceElement, utilice:

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

System.out.println(simpleClassName); 
Cuestiones relacionadas