我有许多子类实现超类动物(狗、猫、老鼠等)
所以我这样做:
Animal[] arrayOfAnimals = new Animal[100];
我把狗、猫等物体放进去。
当我从中得到一些东西时,我会做
If(arrayOfAnimals[1] instanceof Dog) {
((Dog)(arrayOfAnimals[1])).speak();
}
else if(arrayOfAnimals[1] instanceof Cat) {
((Cat)(arrayOfAnimals[1])).speak();
}
因为我需要知道那个动物是猫还是狗,因为例如,每个人的说话方式都不一样。
现在假设我有很多 Animals 子类,我会连续得到很多“else if...”
我的问题是:有没有办法避免这种情况?我已经尝试过使用接口(Animal -> 接口、Dog、Cat 等实现动物),但在我的项目中,数组必须是可克隆的,如果 Animal 是接口(该数组内的对象不会被克隆)