obteniendo solo el nombre de la clase Class.getName ()

87

¿Cómo puedo obtener el nombre de la clase?

String.class.getName()  returns java.lang.String


Solo estoy interesado en obtener la última parte, es decir, solo String ¿
Alguna API puede hacer eso?

akshay
fuente
4
Java tiene una excelente documentación en línea. La página que andyb enlazó a continuación es un ejemplo. Siempre que tenga una pregunta sobre la funcionalidad exacta disponible de una clase o paquete, los javadocs son tan fáciles de encontrar como buscar en Google "java 6 <paquete o clase en cuestión>".
jpm

Respuestas:

182

Class.getSimpleName()

andyb
fuente
9
String.class.getSimpleName () -> String, donde como String.class.getName () -> java.lang.String
Peter Dietz
Gracias, @andyb getSimpleName()es más fácil de acceder al nombre de la clase menos el nombre del paquete. Sintaxis: object.getClass().getSimpleName() código de muestra
Abhijeet
Cómo asignarlo para la variable de cadena estática. muestra un error en el estudio de Android.
MohanRaj S
No funciona para clases internas: esto eliminará el nombre de la clase adjunta, no solo el paquete.
toolforger
9

Lo siguiente en ambos sentidos funciona bien.

System.out.println("The Class Name is: " + this.getClass().getName());
System.out.println("The simple Class Name is: " + this.getClass().getSimpleName());

Salida de la siguiente manera:

El nombre de la clase es: paquete.Student

El nombre simple de la clase es: Estudiante

Venkatesh K
fuente
7

o programáticamente

String s = String.class.getName();
s = s.substring(s.lastIndexOf('.') + 1);
Mauricio quintana
fuente
1
Esto me ayudó ya que no puedo usar getSimpleName () desde mi marco ... Tq
Imposter
1
Además, el enfoque programático produce buenos resultados para las clases anónimas.
Hollis Waite
@Imposter, ¿estás usando algo anterior a Java 1.5?
Stealth Rabbi
Necesita manejar el caso donde no .se encuentra.
eckes
@eckes si no se encuentra el punto, el resultado será -1, agregar 1 le dará una subcadena que comienza en el índice 0, exactamente lo que necesita en este caso. (Acabo de probar eso con int[], el resultado es "[I".)
toolforger
4

Puede utilizar la siguiente técnica simple para imprimir el registro con el nombre de la clase.

private String TAG = MainActivity.class.getSimpleName();

Supongamos que tenemos que verificar el valor de la variable siguiente en el método, luego podemos usar el registro como se muestra a continuación:

private void printVariable(){
Log.e(TAG, "printVariable: ");
}

La importancia de esta línea es que podemos verificar el nombre del método junto con el nombre de la clase. Para escribir este tipo de registro.

escriba: - logge y Enter.

imprimirá en la consola

E/MainActivity: printVariable:
Kailas Bhakade
fuente
2

Social.class.getSimpleName ()

getSimpleName (): devuelve el nombre simple de la clase subyacente como se indica 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 "[]" agregado. En particular, el nombre simple de una matriz cuyo tipo de componente es anónimo es "[]".

LSD25
fuente
1

Aquí está la forma Groovy de acceder a las propiedades del objeto:

this.class.simpleName    # returns the simple name of the current class
eaglet3d
fuente
-2

Obtenga un nombre simple en lugar de una ruta.

String onlyClassName =  this.getLocalClassName(); 

llamar al método anterior en onCreate

AndroidGeek
fuente
Solución incompleta.
PLG
Si no proporciona la fuente para el método, OP no podrá usarlo.
eckes