La réponse d'Andy est tout à fait correcte, mais je voudrais développer un peu le sujet.
.class
est une syntaxe spéciale pour l'obtention d'une instance d'un objet Class. Il peut être utilisé lorsque seul le type est disponible et qu'aucune instance de l'objet associé n'est disponible. Il peut être utilisé avec n'importe quel nom de type concret, y compris les tableaux et les primitives. Par exemple, int.class
est valide.
Cette manière (et d'autres manières) d'obtenir un objet Class est documentée dans l'ancien Sun reflection API docs.
La syntaxe spéciale .class
apparaît souvent dans l'utilisation idiomatique comme un "jeton de type" dans le code générique. Un littéral de classe obtenu avec .class
est appelé un jeton de type lorsqu'il est "passé parmi les méthodes pour communiquer à la fois des informations de type à la compilation et à l'exécution" (Joshua Bloch's Effective Java 2e, page 142).
Y at-il plus d'informations sur l'utilisation de java de l'accord .class? Je comprends quel est le résultat de son utilisation, mais pourquoi Java utilise-t-il cette implémentation? Pourquoi cette syntaxe existe-t-elle au lieu de simplement appeler comme un nouveau MyService(). – Falmarri
Je ne suis pas un expert, mais je soupçonne que cela a quelque chose à voir avec l'architecture d'Android essayant de minimiser ou de cacher l'interaction du développeur avec la création explicite d'activité ou de service. Je ne sais pas précisément pourquoi, mais je vais essayer de le découvrir. –
Cela se fait généralement à cause de l'effacement de type des génériques Java. Vous pouvez passer .class à une méthode avec le type de paramètre Classe afin de capturer le type d'exécution d'une classe, car vous ne pouvez pas faire grand-chose en toute sécurité avec un paramètre générique lui-même. –