Ce n'Classe.getName() faire pour une classe donnée?


Supposons que j'ai une classe "employé" ayant un objet obj. alors comment l'obj.getClass().L'instruction getName () sera exécutée ? Et ce qu'il devrait être de retour ?

Author: rkgarg, 2011-03-21

3 answers

Le getClass() méthode obtient de la classe réelle de l'objet, qui peut être différente de la classe de la variable contenant l'objet. La méthode getName() renverra le package complet plus le nom de classe de cette classe sous forme de chaîne, comme ceci:

com.company.project.package.MyClass

Par exemple, le code suivant affiche la chaîne ci-dessus:

package com.company.project.package;

class MyClass extends Object {
  // some definition
}

Object o = new MyClass();
System.out.println(o.getClass().getName());
 21
Author: Erick Robertson, 2011-03-21 17:45:32

Avertissement: Bien que la réponse d'Erick soit correcte, ce n'est pas complet.

En bref

Cette méthode est similaire à getCanonicalName() avec une différence - elle renvoie le nom binaire de la classe, où la version canonique renvoie null (par exemple pour les classes anonymes).

Détails

Si cet objet de classe représente un type de référence qui n'est pas un type de tableau, le nom binaire de la classe est renvoyé:

String.class.getName()
    returns "java.lang.String"
(new Object() {}).getClass().getName()
    returns "test.Main$1"

Si cet objet de classe représente un type primitif ou void, puis le nom renvoyé est une chaîne égale au mot-clé du langage Java correspondant au type primitif ou void.

byte.class.getName()
    returns "byte"
long.class.getName()
    returns "long"

Si cet objet de classe représente une classe de tableaux, alors la forme interne du nom est constituée du nom du type d'élément précédé d'un ou plusieurs caractères '[' représentant la profondeur de l'imbrication du tableau:

(new Object[3]).getClass().getName()
    returns "[Ljava.lang.Object;"
(new int[3][4][5][6][7][8][9]).getClass().getName()
    returns "[[[[[[[I"

L'encodage des noms de type d'élément est le suivant:

Element Type           Encoding
boolean                Z
byte                   B
char                   C
class or interface     L<classname>;
double                 D
float                  F
int                    I
long                   J
short                  S

Documents officiels sur cette méthode: https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getName--

 2
Author: ursa, 2018-03-02 17:27:04

Le nom de la classe, dans votre cas "employé" ou "mon.paquet.employé".

 -2
Author: Robby Pond, 2011-03-21 17:46:31