Java:如何判断对象是否属于特定的子类
Java:如何判断对象是否属于特定的子类 我想检查一个对象是否属于某个特定的子类,并检查继承自同一超类的其他类是否为真 例如: 超类:水果 亚纲:苹果和香蕉果实 然后我有一个检查(如果appleObject.isThisClass(apple)){do stuff} 到目前为止,我所能找到的只是检查仍然返回true的方法,因为它们共享同一个超类 希望这是有道理的Java:如何判断对象是否属于特定的子类,java,inheritance,Java,Inheritance,Java:如何判断对象是否属于特定的子类 我想检查一个对象是否属于某个特定的子类,并检查继承自同一超类的其他类是否为真 例如: 超类:水果 亚纲:苹果和香蕉果实 然后我有一个检查(如果appleObject.isThisClass(apple)){do stuff} 到目前为止,我所能找到的只是检查仍然返回true的方法,因为它们共享同一个超类 希望这是有道理的 谢谢你的帮助 假设您有香蕉或苹果类型的对象引用apple;然后像这样 if (apple instanceof Apple) // t
谢谢你的帮助 假设您有香蕉或苹果类型的对象引用
apple
;然后像这样
if (apple instanceof Apple) // true
告诉您apple
是否属于apple
类型。何处为
if (apple instanceof Banana) // false
将排除香蕉,最后
if (apple instanceof Fruit) // true
包括香蕉或苹果;但是您可能不应该在调用者()中测试这一点——相反,您应该尝试将行为封装在水果的“接口”中
编辑
鉴于你在评论中提出的其他问题
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;
// }
假设您有一个香蕉或苹果类型的对象引用apple
;然后像这样
if (apple instanceof Apple) // true
告诉您apple
是否属于apple
类型。何处为
if (apple instanceof Banana) // false
将排除香蕉
,最后
if (apple instanceof Fruit) // true
包括香蕉
或苹果;但是您可能不应该在调用者()中测试这一点——相反,您应该尝试将行为封装在水果的“接口”中
编辑
鉴于你在评论中提出的其他问题
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;
// }
使用从对象继承的getClass()
方法
使用从对象继承的getClass()
方法
请过目。执行这样的检查几乎肯定是错误的方法。请仔细检查。执行这样的检查几乎肯定是错误的方法。如果“appleObject”实际上是“Apple”的子类,则苹果的appleObject实例也将返回true。是否有方法测试此情况:if(Apple instanceof Apple)//true if(Apple instanceof Fruit)//FALSE?@user3448228未使用instanceof
。因为每个苹果都是水果!您可以调用getClass()
,但同样-这不是一个好主意,因为它是非常“紧密耦合”的。@user3448228您实际上想用它实现什么?我有一个方法返回一个水果(它可以是苹果或香蕉)。所以,基本上是:水果水果=aMethod();然后我有一个if语句,它检查一个水果,如果它是苹果的东西发生了,如果它是香蕉,什么也不会发生。希望这是有道理的。可能我只是用一种不好的方式设置了所有这些(仍在学习中)。如果“appleObject”实际上是“Apple”的一个子类,那么苹果的appleObject实例也将返回true。但是有没有办法测试这一点:if(Apple instanceof Apple)//true if(Apple instanceof Fruit)//FALSE?@user3448228未使用instanceof
。因为每个苹果都是水果!您可以调用getClass()
,但同样-这不是一个好主意,因为它是非常“紧密耦合”的。@user3448228您实际上想用它实现什么?我有一个方法返回一个水果(它可以是苹果或香蕉)。所以,基本上是:水果水果=aMethod();然后我有一个if语句,它检查一个水果,如果它是苹果的东西发生了,如果它是香蕉,什么也不会发生。希望这是有道理的。有可能我只是用一种糟糕的方式设置了所有这些(仍在学习)。