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

Java:如何判断对象是否属于特定的子类,java,inheritance,Java,Inheritance,Java:如何判断对象是否属于特定的子类 我想检查一个对象是否属于某个特定的子类,并检查继承自同一超类的其他类是否为真 例如: 超类:水果 亚纲:苹果和香蕉果实 然后我有一个检查(如果appleObject.isThisClass(apple)){do stuff} 到目前为止,我所能找到的只是检查仍然返回true的方法,因为它们共享同一个超类 希望这是有道理的 谢谢你的帮助 假设您有香蕉或苹果类型的对象引用apple;然后像这样 if (apple instanceof Apple) // t

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

我想检查一个对象是否属于某个特定的子类,并检查继承自同一超类的其他类是否为真

例如:

超类:水果

亚纲:苹果和香蕉果实

然后我有一个检查(如果appleObject.isThisClass(apple)){do stuff}

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

希望这是有道理的


谢谢你的帮助

假设您有香蕉或苹果类型的对象引用
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语句,它检查一个水果,如果它是苹果的东西发生了,如果它是香蕉,什么也不会发生。希望这是有道理的。有可能我只是用一种糟糕的方式设置了所有这些(仍在学习)。