Ce n'.classe moyenne en Java?


Que signifie .class en Java? Par exemple, si j'ai créé une classe appelée Print. Que renvoie Print.class?

Author: Nabin, 2013-02-26

7 answers

Lorsque vous écrivez .class après un nom de classe, il fait référence au littéral de classe - java.lang.Class objet qui représente l'information sur classe donnée.

Par exemple, si votre classe est Print, puis Print.class est un objet qui représente la classe Print au moment de l'exécution. C'est le même objet qui est renvoyé par la méthode getClass() de toute instance (directe) de Print.

Print myPrint = new Print();
System.out.println(Print.class.getName());
System.out.println(myPrint.getClass().getName());
 110
Author: Javier, 2017-08-26 22:48:13

.la classe est utilisée lorsqu'il n'y a pas d'instance de la classe disponible.
.getClass () est utilisé lorsqu'une instance de la classe est disponible.

Objet.getClass () renvoie la classe de l'objet donné. Par exemple:

String string = "hello";
System.out.println(string.getClass().toString());

Cela produira

class java.lang.String

C'est la classe de l'objet string :)

 43
Author: christopher, 2013-02-26 00:19:41

Si une instance d'un objet est disponible, alors le moyen le plus simple d'obtenir sa classe est d'invoquer Object.getClass()

La syntaxe .class

Si le type est disponible, mais il n'y a pas d'exemple il est possible d'obtenir une Classe en ajoutant .class pour le nom du type. C'est aussi le moyen le plus simple d'obtenir la classe pour un type primitif.

boolean b;
Class c = b.getClass();   // compile-time error

Class c = boolean.class;  // correct

Voir: docs.oracle.com à propos de la classe

 5
Author: Andrew Xie, 2016-02-04 10:12:50

Juste pour clarifier, ceci '.la méthode de la classe ne fait pas référence au fichier bytecode que vous voyez après la compilation du code java ni à une confusion entre les concepts de Classe et d'objet dans la théorie de la POO.

Ceci '.la méthode class ' est utilisée en Java pour la réflexion du code. Généralement, vous pouvez collecter des métadonnées pour votre classe, telles que le nom complet de la classe qualifiée, la liste des constantes, la liste des champs publics, etc.

Vérifiez ces liens (déjà mentionnés ci-dessus) pour obtenir tous les details:
https://docs.oracle.com/javase/tutorial/reflect/class/classNew.html
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html

Normalement, vous ne prévoyez pas d'utiliser la réflexion tout de suite lorsque vous commencez à construire votre projet. C'est quelque chose dont vous savez que vous avez besoin après avoir essayé de gérer le code qui fonctionne déjà. Plusieurs fois, vous en avez besoin pour gérer plusieurs instances de votre programme. Peut-être que vous voulez identifier chaque "clone" particulier pour déterminer si quelque chose qui est déjà défini, ou le nombre de fonctions, ou tout simplement enregistrer les détails d'une instance particulière de la classe.

 4
Author: Salvador Valencia, 2016-09-20 19:18:22

S'il n'y a pas d'instance disponible, la syntaxe .class est utilisée pour obtenir l'objet de classe correspondant pour une classe, sinon vous pouvez utiliser la méthode getClass() pour obtenir l'objet de classe. Comme il n'y a pas d'instance de type de données primitif, nous devons utiliser la syntaxe .class pour les types de données primitifs.

    package test;

    public class Test {
       public static void main(String[] args)
       {
          //there is no instance available for class Test, so use Test.class
          System.out.println("Test.class.getName() ::: " + Test.class.getName());

          // Now create an instance of class Test use getClass()
          Test testObj = new Test();
          System.out.println("testObj.getClass().getName() ::: " + testObj.getClass().getName());

          //For primitive type
          System.out.println("boolean.class.getName() ::: " + boolean.class.getName());
          System.out.println("int.class.getName() ::: " + int.class.getName());
          System.out.println("char.class.getName() ::: " + char.class.getName());
          System.out.println("long.class.getName() ::: " + long.class.getName());
       }
    }
 2
Author: Ranjeet, 2016-05-03 11:31:26

Je pense que la clé ici est de comprendre la différence entre une Classe et un Objet. Un Objet est une instance d'une Classe. Mais dans un langage entièrement orienté objet, une classe est aussi un Objet. Donc, appeler .class obtient la référence à l'objet de classe de cette classe, qui peut ensuite être manipulé.

 1
Author: Xerxes, 2014-12-04 21:47:46

Un littéral de classe est une expression composée du nom d'une classe, d'une interface, d'un tableau ou d'un type primitif, ou du pseudo-type void, suivi d'un '.'et la classe token. L'un des changements dans JDK 5.0 est que la classe java.lang.La classe est générique, java.lang.Class Class<T>, donc:

Class<Print> p = Print.class;

Références ici:

Https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html

Http://docs.oracle.com/javase/tutorial/extra/generics/literals.html

Http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.8.2

 0
Author: PbxMan, 2016-10-13 09:02:53