Cualquier clase en el java tiene una .class, quiero saber .class es un método estático o no? O es un campo público estático?¿Es .class un método o campo?
boolean alwaysTrue = (String.class == Class.forName("java.lang.String"));
Cualquier clase en el java tiene una .class, quiero saber .class es un método estático o no? O es un campo público estático?¿Es .class un método o campo?
boolean alwaysTrue = (String.class == Class.forName("java.lang.String"));
Su ninguna.
Es una función de lenguaje integrado (un literal de clase) que se parece a un campo final público estático.
Específicamente, una * literal de clase *: http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#250782 –
https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.8.2
No es ni. Es una expresión evaluada en tiempo de compilación para el objeto Class
para esa clase.
Tsk, utilizando la segunda edición desactualizada. ;-) –
La tercera edición (actual) es probablemente un mejor enlace; también proporciona más detalles que la 2da ed. –
Bastante bien, voy a editar. – Viruzzo
Cuando escribe .class
después de un nombre de clase, hace referencia al objeto Class
que representa la clase dada. .class
se usa cuando no hay una instancia de la clase disponible.
Por ejemplo, si su clase es Print
(se recomienda que el nombre de clase comience con una letra mayúscula), entonces Print.class
es un objeto que representa la clase Imprimir en tiempo de ejecución. Es el mismo objeto que es devuelto por el método de cualquiera de instancia (directa) de Print.
Print myPrint = new Print();
System.out.println(Print.class.getName());
System.out.println(myPrint.getClass().getName());
instancia de una clase no es lo mismo que un objeto que representa el tipo de clase – Val
getClass()
He leído y volver a leer su pregunta tres veces, y me temo que no puedo hacer ningún sentido de eso – NPE@aix: en Java, todas las clases (por ejemplo, 'String') tienen un * [literal de clase] (http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#250782) * ('.class') que es la instancia [' Class'] (http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html) para esa clase. Por ejemplo, 'String.class == Class.forName (" java.lang.String ")' (excluyendo casos de borde alrededor de classloaders y tal). –
@ T.J.Crowder: Oh. Pensé que estaba hablando de los archivos de clase * :-) – NPE