La risposta di Andy è decisamente corretta, ma voglio approfondire un po 'il punto.
.class
è una sintassi speciale per ottenere un'istanza di un oggetto Classe. Può essere utilizzato quando solo il tipo è disponibile e nessuna istanza dell'oggetto correlato è presente. Può essere utilizzato con qualsiasi nome di tipo concreto, inclusi array e primitive. Ad esempio, int.class
è valido.
In questo modo (e in altri modi) ottenere un oggetto di classe sono documentati nel vecchio Sun reflection API docs.
La sintassi speciale .class
appare spesso nell'uso idiomatico come "tipo token" nel codice generico. Un letterale di classe ottenuto con .class
viene chiamato token di tipo quando "viene passato tra i metodi per comunicare sia le informazioni sul tipo di runtime che di compilazione" (Joshua Bloch's Effective Java 2e, p. 142).
fonte
2010-07-20 23:42:18
Esistono ulteriori informazioni sull'utilizzo di java dell'offerta .class? Capisco qual è il risultato del suo utilizzo e tale, ma perché java usa questa implementazione? Perché esiste anche quella sintassi invece di chiamare semplicemente MyService(). – Falmarri
Non sono esperto, ma sospetto che abbia qualcosa a che fare con l'architettura di Android cercando di minimizzare o nascondere l'interazione dello sviluppatore con la creazione di oggetti o attività esplicite. Non so esattamente perché, ma cercherò di scoprirlo. –
Di solito è fatto a causa della cancellazione del tipo di generici Java. È possibile passare .class a un metodo con il tipo di parametro Classe per acquisire il tipo di esecuzione di una classe, poiché non è possibile fare molto con un parametro generico. –