Qualsiasi classe in Java ha una classe. Voglio sapere. Class è un metodo statico o no? O è un campo statico pubblico?È .class un metodo o un campo?
boolean alwaysTrue = (String.class == Class.forName("java.lang.String"));
Qualsiasi classe in Java ha una classe. Voglio sapere. Class è un metodo statico o no? O è un campo statico pubblico?È .class un metodo o un campo?
boolean alwaysTrue = (String.class == Class.forName("java.lang.String"));
Il suo n.
È una funzionalità di linguaggio incorporata (un letterale di classe) che assomiglia ad un campo finale statico pubblico.
In particolare, un * letterale di classe *: 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
Non è né. È un'espressione valutata in fase di compilazione per l'oggetto Class
per quella classe.
Tsk, utilizzando la seconda edizione obsoleta. ;-) –
La terza (attuale) edizione è probabilmente un link migliore; fornisce anche maggiori dettagli rispetto al 2 ° ed. –
Abbastanza giusto, modifico. – Viruzzo
Quando si scrive .class
dopo il nome di una classe, fa riferimento all'oggetto Class
che rappresenta la classe data. .class
viene utilizzato quando non è disponibile un'istanza della classe.
Ad esempio, se la classe è Print
(è consigliabile che il nome della classe inizi con una lettera maiuscola), quindi Print.class
è un oggetto che rappresenta la classe Stampa su runtime. E 'lo stesso oggetto che viene restituito dal metodo di qualsiasi istanza (diretta) di Print.
Print myPrint = new Print();
System.out.println(Print.class.getName());
System.out.println(myPrint.getClass().getName());
l'istanza di una classe non è uguale a un oggetto che rappresenta il tipo di classe – Val
getClass()
Ho letto e ri-letto la tua domanda tre volte, e temo che non posso fare alcun senso di esso. – NPE@aix: in Java, tutte le classi (ad es. 'String') hanno un * [valore letterale] (http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#250782) * ('.class') che è l'istanza [' Class'] (http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html) per quella classe. Ad esempio, 'String.class == Class.forName (" java.lang.String ")' (tranne i casi limite relativi ai classloader e simili). –
@ T.J.Crowder: Oh. Ho pensato che stesse parlando di file * di classe * :-) – NPE