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?


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

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


7

o programáticamente

String s = String.class.getName();
s = s.substring(s.lastIndexOf('.') + 1);

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:

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 "[]".


1

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

this.class.simpleName    # returns the simple name of the current class

-2

Obtenga un nombre simple en lugar de una ruta.

String onlyClassName =  this.getLocalClassName(); 

llamar al método anterior en onCreate


Solución incompleta.
PLG

Si no proporciona la fuente para el método, OP no podrá usarlo.
eckes
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.