如何检查子类的类型?

时间:2014-02-10 08:29:30

标签: java class inheritance

我想检查Java中子类的类型。这是我想要实现的伪代码:

public class Brown { ... }
class Poo extends Brown { ... }
class Brownie extends Brown { ... }
...

ArrayList<Brown> brownThings = new ArrayList<Brown>();
...

for (Brown i: brownThings)
    // if i is a brownie eat
    // else dispose of

4 个答案:

答案 0 :(得分:4)

您可以使用instanceof关键字

if (i instanceof Brownie ) {
    // do something
  }

确切地检查实例类型。

答案 1 :(得分:1)

您可以使用instaceof运算符。例如:

if (i instanceof Brownie) {
  eat(i);
} else {
  dispose(i);
}

instaceof opertaor检查对象的类型是类的实例还是扩展或实现指定类型的类。

您可以在Java tutorial, operators中阅读更多内容。另请参阅问题What is the instaceof operator used for

答案 2 :(得分:0)

instanceof can handle that just fine.

答案 3 :(得分:0)

这应该做:

for (Brown i: brownThings) {
    if (i instanceof Brownie) {
        //eat
    }
}