Java:如何判断对象是否属于特定的子类。
我想检查一个对象是否属于某个特定的子类,并且对于从同一个超类继承的其他类,检查不会返回true。
所以,例如:
超类:水果
子类:苹果和香蕉延伸水果
然后我有一张支票(如果是appleObject.isThisClass(apple)){做东西}
到目前为止,我所能找到的是检查方法仍然会返回true,因为它们共享同一个超类。
希望这是有道理的。
感谢您的帮助。
答案 0 :(得分:3)
假设您有Banana或Apple类型的对象引用apple
;那么类似的东西,
if (apple instanceof Apple) // true
告诉您apple
是否属于Apple
类型。
if (apple instanceof Banana) // false
将排除Banana
,最后
if (apple instanceof Fruit) // true
包括Banana
或Apple
;但你可能不应该在调用者(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)
使用从Object继承的getClass()
方法。
http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#getClass%28%29