我有三个类(Carnivore
,Herbivore
和Plant
)扩展了另一个类(Organism
)。如何判断对象属于哪个子类?到目前为止,我有一个具有类名称的属性,但我认为可以使用类似于javascript类型的运算符。 (类似于:Organism typeof Carnivore
)
答案 0 :(得分:3)
您可以使用instanceof
关键字。
但请注意,需要使用此功能通常是设计不良的标志。您通常应该在每个派生类中编写方法覆盖,这样您就不需要明确地检查哪个类是什么。
答案 1 :(得分:2)
您可以说if( animal instanceof Carnivore )
以确定它是食肉动物还是其后代,并且您可以使用if( animal.getClass() == Carnivore.class )
来确定它是否是食肉动物而不是其后代。
但是,您需要执行此类检查通常意味着您的设计存在缺陷,缺少可覆盖的方法或类似的东西。
答案 2 :(得分:1)
Java有一个instanceof
运算符。但是,这种类型的东西可能与面向对象的设计背道而驰。
答案 3 :(得分:0)
您可以使用instanceof
运算符
答案 4 :(得分:0)
查看instanceof
运算符
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
请注意,虽然很多人认为使用它可能会被视为危险,但它们甚至可以与GOTO
进行比较,但它并不错in some cases。你可以使用它,但不是经常使用它。
答案 5 :(得分:0)
objInstance instanceof Carnivore
。这里objInstance是你想要测试的对象。