¿Qué es una clase literal en Java?

Resuelto gameover asked hace 14 años • 10 respuestas

Del tutorial de Java :

Finalmente, también hay un tipo especial de literal llamado literal de clase , formado tomando un nombre de tipo y agregando " .class"; Por ejemplo, String.class. Esto se refiere al objeto (de tipo Class) que representa el tipo mismo.

¿A qué tipo de variable se le puede asignar este literal?

Si es posible, dé un pequeño ejemplo.

gameover avatar Jan 29 '10 15:01 gameover
Aceptado
Class<String> c = String.class;

Consulta el Javadoc parajava.lang.Class ver qué puedes hacer con uno de estos pequeños, principalmente relacionado con la reflexión.

Steven Schlansker avatar Jan 29 '2010 08:01 Steven Schlansker

Para entender eso, debes entender que String es una instancia (objeto) de la clase Class . Un literal de cadena (por ejemplo, "Soy una cadena") es una notación que representa una instancia (objeto) de la clase String , mientras que un literal de clase (por ejemplo, Hashtable.class) es una notación que representa una instancia de la clase Class .

shinkou avatar Jan 29 '2010 09:01 shinkou

Gracias a las otras buenas respuestas aquí, sabes lo que es, pero aquí hay un ejemplo de uso típico que también puede aclarar:

    private static Logger log = Logger.getLogger(YourClassHere.class);

Como sugiere el código, esta es una línea donde estamos inicializando un marco de registro (en este ejemplo, estoy usando el org.apache.log4jpaquete, pero el principio se extiende a otros marcos). El getLogger()método requiere un literal de clase para saber qué está registrando (es decir, la clase del objeto actual).

Ben avatar Jan 29 '2010 09:01 Ben