¿Qué es una clase literal en Java?
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 tipoClass
) que representa el tipo mismo.
¿A qué tipo de variable se le puede asignar este literal?
Si es posible, dé un pequeño ejemplo.
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.
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 .
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.log4j
paquete, 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).