web-dev-qa-db-fra.com

Que retourne classname.class?

Quelqu'un pourrait-il expliquer ce que SomeClassname.class renvoie en Java? Je ne peux pas comprendre ce que ça fait ..

33
Rajeshwar

Il retourne la même chose que Object.getClass () fait pour une instance donnée, mais vous pouvez l’utiliser quand vous savez de manière statique quelle classe vous voulez (c’est-à-dire au moment de la compilation).

De la Javadoc:

Retourne la classe d'exécution de cet objet.

En bref, il vous donne un objet qui représente le class de l’objet (original). Il est utilisé, entre autres, par reflet lorsque vous souhaitez découvrir par programmation des méthodes et des champs afin de les invoquer/d’y accéder.

Par exemple:

        Method m[] = String.class.getDeclaredMethods();
        for (int i = 0; i < m.length; i++)
        {
          System.out.println(m[i].toString());
        }

La Javadoc vous renvoie également à la Spécification du langage Java - Class Literals (qui peut être un peu difficile à lire).

36
Greg Kopff

Il retourne l'objet Class qui représente le nom de la classe spécifiée. Ceci est utilisé si vous avez besoin d'obtenir l'objet Class.

Ceci correspond approximativement à .getClass () qui renvoie l'objet Class qui correspond à l'instance de l'objet. Vous utilisez someclassname.class lorsque vous souhaitez utiliser l'objet Class et que vous n'avez pas d'instance d'objet.

12
Francis Upton

.class est un classe littéral ... Tout comme 5 est un littéral int, tout comme 5.0 est un double littéral (étonnamment, il existe une classe nommée 'Class' dans le package Java.lang).

Par conséquent, vous pouvez imprimer le littéral de classe (comme vous pouvez imprimer n'importe quel objet ... vous obtenez ce que la méthode toString () renvoie dans la classe Class). Vous pouvez avoir une variable de classe.

PS: il y a beaucoup de fonctions que vous pouvez utiliser

3
user2067316

Identique à la méthode .getClass (), mais ne peut être utilisée que pour les classes nommées et void. le moyen le plus simple d’obtenir une classe pour un type primitif.

1
Trent Steele

Cela ressemble à l'objet Classe = SomeClass.class; L'instruction ci-dessus va renvoyer l'objet de cette classe particulière et le mettra dans la variable de classe . Il le retournera avec l'objet Class.

0
Chetan Patil