2010-03-11 21 views
0

我有这个对象,它是超类的一个实例。我想知道那个对象真的是哪个子类,以便我可以决定如何处理它。有这个getClass()方法,但它显然不用于比较问题。我如何获得我的对象的子类型?如何获得用于比较的类的类型

+0

对象不能是子类。对象可以是一个类的实例。 – Andrey 2010-03-11 19:35:08

回答

1

,如果你想这样做,但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"); 
    } 
    } 

} 

参见Beware of instanceof operator

+0

是啊这可能是一个设计缺陷:)但我不知道,似乎有别无他法。 – Halo 2010-03-11 19:33:26

+0

http://www.javapractices.com/topic/TopicAction.do?Id=31 – 2010-03-11 19:36:01

+0

hmm。那么这怎么能适用于MVC呢?我的意思是,我的模型不知道视图,所以我不能使用多态性在视图中创建适当的组件。那我该怎么做? – Halo 2010-03-11 19:56:21

1

class c =(你的超类名).getClass();

如果(c.getName ==“你的子类名”) 采取行动

+0

谢谢,我试过了,它给包的名称,例如package.subclass – Halo 2010-03-11 19:29:02

+1

你也可以使用instanceOf ...... – erasmus 2010-03-11 19:33:05