我想检查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
答案 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
}
}