Java:如何判断对象是否属于特定的子类

时间:2014-04-12 02:07:51

标签: java inheritance

Java:如何判断对象是否属于特定的子类。

我想检查一个对象是否属于某个特定的子类,并且对于从同一个超类继承的其他类,检查不会返回true。

所以,例如:

超类:水果

子类:苹果和香蕉延伸水果

然后我有一张支票(如果是appleObject.isThisClass(apple)){做东西}

到目前为止,我所能找到的是检查方法仍然会返回true,因为它们共享同一个超类。

希望这是有道理的。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

假设您有Banana或Apple类型的对象引用apple;那么类似的东西,

if (apple instanceof Apple) // true

告诉您apple是否属于Apple类型。

if (apple instanceof Banana) // false

将排除Banana,最后

if (apple instanceof Fruit) // true

包括BananaApple;但你可能不应该在调用者(tight coupling)中对此进行测试 - 相反,你应该尝试在Fruit“界面中封装行为”。

修改

鉴于评论中的其他问题,

Fruit aFruit = aMethod(); // get a fruit.
if (aFruit instanceof Apple) {
  Apple apple = (Apple) aFruit;
  // do apple things with the apple.
  apple.somethingOnlyApplesDo();
} // else if (aFruit instanceof Banana) {
// Do Nothing With Bananas.
// Banana banana = (Banana) aFruit;
// }

答案 1 :(得分:2)