【发布时间】:2017-09-17 20:08:33
【问题描述】:
我正在处理从一个名为 Creature 的类继承的多个类。我有一个 Creature 对象数组,我正在循环这些对象以确定数组中的哪些是子类 Animal。我试过instanceOf,但我收到一个错误,说我将它声明为一个变量。这是我的方法的样子:
public void notifyStateChange() {
for (int i = 0; i < count; i++) {
Class c = creatures[i].getClass();
if (c.getName().equals("Animal")) {
System.out.println("Animal type here");
}
}
}
【问题讨论】:
-
语法是
if (creatures[i] instanceof Animal) -
但是如果你的代码需要这样的东西,这表明它可能设计得更好,因为
instanceof的大量使用是一种“反模式”,一种暗示代码损坏的设计。跨度> -
使用 instanceOf 我得到错误...这里不允许变量声明;不兼容的类型:无法将生物转换为布尔值
-
只覆盖继承类中的方法,并从引用中调用方法
-
这里有点不对劲。发布您的代码并尝试使用
instanceof。
标签: java inheritance subclass