2010-03-11 17 views
0

J'ai cet objet qui est une instance d'une superclasse. Je veux savoir quelle sous-classe est réellement cet objet, afin que je puisse décider quoi en faire. Il y a cette méthode getClass() mais elle n'est apparemment pas utilisée pour les problèmes de comparaison. Comment puis-je obtenir le sous-type de mon objet?Comment obtenir le type de la classe pour la comparaison

+0

l'objet ne peut pas être une sous-classe. objet peut être instance d'une classe. – Andrey

Répondre

1

Vous pouvez avoir un défaut de conception si vous essayez de le faire, mais instanceof.

public class MainClass { 
    public static void main(String[] a) { 

    String s = "Hello"; 
    if (s instanceof java.lang.String) { 
     System.out.println("is a String"); 
    } 
    } 

} 

Voir Beware of instanceof operator.

+0

ouais c'est probablement un défaut de conception :) Mais je ne sais pas, il semble ne sois pas un autre moyen de le faire. – Halo

+0

http://www.javapractices.com/topic/TopicAction.do?Id=31 –

+0

hmm. comment cela peut-il s'appliquer à MVC, alors? Je veux dire, mon modèle ne connaît pas la vue, donc je ne peux pas utiliser le polymorphisme pour créer les composants appropriés dans la vue. Comment vais-je faire ça alors? – Halo

1

Classe c = (nom de votre super classe) .getClass();

si (c.getName == « votre sous nom de classe ») prendre action

+0

merci, je l'ai essayé et il donne le nom avec le paquet, par exemple package.subclass – Halo

+1

vous pouvez également utiliser instanceOf ...... – erasmus