Java Genericsが難しい(3)
2.ジェネリクスとオーバーロード
既存の方法で、何とか演算処理をさせたく少し試してみた。
Genericsメソッド内から、型だけ異なるオーバーロードメソッドの
呼び出してみた。
class Plus <T,R > implements Function <T,R > {
R apply(T arg1, T arg2) {
return apply(arg1,arg2);
}
Integer apply(Integer arg1, Integer arg2) {
return arg1 + arg2;
}
Double apply(Double arg1, Double arg2) {
return arg1 + arg2;
}
}
結果はコンパイルエラー。
イレイジャ処理でObject型になってしまうので、IntegerともDoubleとも
合わない適当なメソッドが無い、とコンパイラが文句言う。
そもそもこのコードがうまくいったとしても、折角Genericsを利用しているのに
オーバーロードメソッド定義していたらGenerics使っている意味無いし。
(Genericsなんか使わずオーバーロードメソッドで十分と)
既存の方法で、何とか演算処理をさせたく少し試してみた。
Genericsメソッド内から、型だけ異なるオーバーロードメソッドの
呼び出してみた。
class Plus
R apply(T arg1, T arg2) {
return apply(arg1,arg2);
}
return arg1 + arg2;
}
return arg1 + arg2;
}
結果はコンパイルエラー。
イレイジャ処理でObject型になってしまうので、IntegerともDoubleとも
合わない適当なメソッドが無い、とコンパイラが文句言う。
そもそもこのコードがうまくいったとしても、折角Genericsを利用しているのに
オーバーロードメソッド定義していたらGenerics使っている意味無いし。
(Genericsなんか使わずオーバーロードメソッドで十分と)
コメント