ネタ心者歓迎! 今更ながらにJava相談室
■ このスレッドは過去ログ倉庫に格納されています
0341デフォルトの名無しさん
NGNGclass AB extends A {}
class AC extends A {}
で、
class C {
void method(AB typeAB) {
// ...
}
void method(AC typeAC) {
// ...
}
}
のとき、
C c = new C();
A[] arrayA = {new AB(),
new AC()}; // 配列使ってるのはあんまり気にしないで。
ってしたとして、
for(int i=0;i<arrayA.length;i++) {
c.method(arrayA[i]);
}
ってしたかったんだけど、これってarrayA(型はA)の実際のインスタンスの型(AB or AC)は見てくれないよねぇ?
と言うことで、たぶんコンパイル時点ではじかれる気がするんだけど、こういうことをエレガントにやりたい場合ってどうするの?
Cに、
void method(A typeA) {
if(typeA instanceof AB) {
method((AB)typeA);
} else if(typeA instanceof AC) {
method((AC)typeA);
}
}
を追加なんてやんないよね?
誰か教えて〜。
あ、あと蛇足なんだけど、配列のlengthってフィールドはどこに記述されてんのかな。とか疑問に思ってみたり。
■ このスレッドは過去ログ倉庫に格納されています