動作しているように見えますが、「良い」プログラミングと見なされますか?
明確にするための例を次に示します。
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 ステートメントは避けたいと思います。なぜなら、コードがより大きく複雑になるからです。