6
votes

L'utilisation de la méthode getclass ()

J'essayais d'utiliser la méthode getclass () et j'ai le code suivant:

class parent{}
class child extends parent{}
public class test {
    public static void main(String[] args){
        child b= new child();
        System.out.println(b.getClass()==parent.class);
    }
}


0 commentaires

3 Réponses :


6
votes

Depuis l'introduction de génériques dans Java 5, le Java. Lang.class classe est générique sur le type qu'il représente. Cela permet de construire un objet à travers leur de classe sans couler et active d'autres idiomes utiles.

C'est pourquoi le compilateur peut devenir trop intelligent et voir qu'il est capable d'évaluer entièrement l'expression au moment de la compilation : Votre expression est toujours false . Le compilateur vous donne l'erreur de compatibilité de type, mais c'est un résultat direct de l'expression étant la constante de temps de compilation.

Un moyen d'éviter que ceci consiste à utiliser java.lang.Object comme le type. Une fois que vous faites cela, le compilateur ne peut plus évaluer le type de résultat gettype selon précisément, évitant ainsi l'erreur.

Une autre façon de résoudre ce problème de réparer le retour Tapez à une classe non générique xxx

ou à l'aide d'une variable intermédiaire du type non générique: xxx < / pré>


1 commentaires

Merci :-) le figuré.



1
votes

Ce message d'erreur signifie fondamentalement que le compilateur peut indiquer lorsqu'il s'agit de la compilation du programme que la réponse à cette vérification de l'égalité sera toujours fausse. Comme il connaît la classe enfant et la classe des parents ne peut jamais être égale, il refuse de compiler le code.


0 commentaires

-1
votes

Si vous voulez juger si b.geclass () hériter parent.class, je suggère d'utiliser cette méthode: xxx

et appelez xxx < / p>


1 commentaires

classe.isAssiCableFrom () et classe.isinstance () Do déjà tout cela, et cela ne répond pas réellement à la question.