它似乎有效,但它被认为是“好”的编程吗?
这是一个澄清的例子:
public class foo{
foomethod(){do something};
}
public class foo1 extends foo{
@override foomethod(){do something};
}
public class foo2 extends foo{
@override foomethod(){do something};
}
ArrayList x /*with foo1 and foo2 objects*/
for (Object o : x){((foo)o).foomethod();}
这是被认为是“好”的编程吗?如果不是,还有什么是一个不错的紧凑替代方案?(如果可能,除了 switch(o.getClass()) 之外)
编辑因为我真的不擅长澄清它似乎:)
我的意思是调用已被覆盖的方法而不是超级方法。我想做的另一种方法是:
ArrayList x /* 再次使用 foo1 和 foo2 对象*/
for (Object o : x){
switch(o.getClass()){
case foo1.class:
((foo1)o).foomethod();
break;
case foo2.class:
((foo1)o).foomethod();
break;
}
}
但我想避免 switch 语句,因为它使代码变得更大更复杂。