Supongamos que tengo un "empleado" de clase que tiene un objeto obj. ¿cómo se realizará la instrucción obj.getClass(). GetName()? ¿Y qué debería ser el regreso?¿Qué hace Class.getName() para una clase determinada?
Respuesta
El método getClass()
obtiene la clase real del objeto, que puede ser diferente de la clase de la variable que contiene el objeto. El método getName()
devolverá el paquete más clase nombre completo de esa clase como una cadena, así:
com.company.project.package.MyClass
Por ejemplo, el siguiente código genera la cadena anterior:
package com.company.project.package; class MyClass extends Object { // some definition } Object o = new MyClass(); System.out.println(o.getClass().getName());
El nombre de la clase, en su caso "empleado" o "my.package.employee".
Descargo de responsabilidad: Si bien la respuesta de Erick es correcta, no está completa.
En resumen
Este método es similar a getCanonicalName() con una diferencia - se devuelve el nombre binario de la clase, donde versión canónica devuelve null (por ejemplo para las clases anónimas).
detalles
Si este objeto clase representa un tipo de referencia que no es de tipo entonces el nombre binario de la clase se devuelve un array:
String.class.getName()
returns "java.lang.String"
(new Object() {}).getClass().getName()
returns "test.Main$1"
Si este objeto clase representa un tipo primitivo o nulo, el nombre devuelto es una cadena igual a la palabra clave del lenguaje Java correspondiente al tipo primitivo o nulo.
byte.class.getName()
returns "byte"
long.class.getName()
returns "long"
Si esta clase de objeto representa una clase de matrices, a continuación, la forma interna del nombre consiste en el nombre del tipo de elemento precedido de uno o más '[' caracteres que representan la profundidad de la anidación array:
(new Object[3]).getClass().getName()
returns "[Ljava.lang.Object;"
(new int[3][4][5][6][7][8][9]).getClass().getName()
returns "[[[[[[[I"
La codificación de los nombres de tipo de elemento es el siguiente:
Element Type Encoding
boolean Z
byte B
char C
class or interface L<classname>;
double D
float F
int I
long J
short S
docs oficiales sobre este método: https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getName--
- 1. ¿Es class.getName() caro?
- 2. ¿Qué hace "implements" en una clase?
- 3. Determinar qué aspectos se enganchan en una clase determinada
- 4. Cambiar un estilo de enlace, sólo para una determinada clase
- 5. ¿Qué hace una clase de personaje con solo un caret?
- 6. ¿Qué hace la clase clearfix en css?
- 7. ¿Cómo obtener la clase Array para una clase determinada en Java?
- 8. Descubre las subclases de una clase determinada en Obj-C
- 9. Borrar cookies para una aplicación iOS determinada
- 10. ¿Cómo debo optimizar una tabla hash para una población determinada?
- 11. ¿Qué hace System.Concurrency.AsyncLock?
- 12. ¿Qué hace class_getClassVariable()?
- 13. ¿Qué estilo usas para crear una "clase"?
- 14. funciones miembro sobrecargados para una plantilla determinada especialización
- 15. ¿Qué hace la clase SQLiteOpenHelper con el parámetro de contexto?
- 16. ¿por qué la clase phpmailer hace eco de los textos?
- 17. Foo.class ¿qué hace?
- 18. ¿Qué hace un buen nombre para una función de ayuda?
- 19. ¿Qué hace '@_' en Perl?
- 20. Obtener un identificador de tipo uniforme para una extensión determinada
- 21. ¿Qué hace exactamente org.apache.commons.lang.builder.CompareToBuilder?
- 22. ¿Cómo saber a qué clase se hace referencia más?
- 23. ¿Qué hace la clase ClassName <:: OtherClassName en Ruby?
- 24. ¿Cómo verificaría una cadena para una determinada letra en Python?
- 25. ¿Qué hace Application.Run()?
- 26. PHP: compruebe si una variable es una instancia de una determinada clase
- 27. ¿Qué hace [:]?
- 28. Determinando si se hace referencia a una clase C#
- 29. ¿Qué hace '&' en una declaración de C++?
- 30. ¿Qué hace? para i = 1, seleccione ('#', ...)
El objeto que devuelve es un objeto? O cualquier subclase de Object? – justkt
Tienes que ser un poco más específico. Agregue algunos detalles para que pueda entender lo que está buscando ... – Thomas
No me queda claro a qué se refiere con "cómo se ejecutará [una declaración]". ¿Estás preguntando cómo la JVM realiza despacho dinámico en tiempo de ejecución? ¿Cómo el compilador genera bytecode? ¿O simplemente cómo escribir código que hará que se llame (aunque este último parece trivialmente directo)? –