小编Fra*_*nca的帖子

Java - 使用超类对象数组避免强制转换

我有很多子类实现超类动物(狗,猫,老鼠等)

所以我这样做:

Animal[] arrayOfAnimals = new Animal[100];
Run Code Online (Sandbox Code Playgroud)

我把它放在狗,猫等物体上.

当我从中得到一些东西时,我做到了

If(arrayOfAnimals[1] instanceof Dog) {
    ((Dog)(arrayOfAnimals[1])).speak();
}

else if(arrayOfAnimals[1] instanceof Cat) {
    ((Cat)(arrayOfAnimals[1])).speak();
}
Run Code Online (Sandbox Code Playgroud)

因为我需要知道动物是猫还是狗,因为,例如,每个人都说不同.

现在假设我有许多动物的子类,我会连续得到许多"如果......"

我的问题是:有没有办法避免这种情况?我已经尝试过使用接口(Animal - > interface,Dog,Cat等实现动物),但在我的项目中,数组必须是可克隆的,如果Animal是一个数组,你就不能克隆一个数组"Animal [] arrayOfAnimals"接口(不会克隆该数组中的对象)

java arrays casting clone subclass

2
推荐指数
1
解决办法
1645
查看次数

标签 统计

arrays ×1

casting ×1

clone ×1

java ×1

subclass ×1