Java Genericsが難しい(2)
1.ジェネリクスと四則演算
以下のような記述がしたかったのだけど、javaではできません。(コンパイルエラー)
C++Templateならこんな感じでもいけるはず。
class Plus <T extends Number,R extends Number>
implements Function <T,R > {
R apply(T arg1, T arg2) {
return arg1 + arg2;
}
}
”このインタフェースを継承するとコンパイルのときboxing/unboxingが働くよ”
というマーカーインタフェースがない(Numberクラスはダメ)ので、ジェネリクス型で
記述した変数に対し演算子を用いて演算することはできない。
「ジェネリクスと四則演算」の組み合わせはC#(.net)でも利用できないようで、
「わんくま同盟」の方のblogにその辺の記事をみかけた。
でも演算子オーバーロードのあるC#(.net)は将来に希望を持てそうでうらやましい。
以下のような記述がしたかったのだけど、javaではできません。(コンパイルエラー)
C++Templateならこんな感じでもいけるはず。
class Plus
implements Function
R apply(T arg1, T arg2) {
return arg1 + arg2;
}
}
”このインタフェースを継承するとコンパイルのときboxing/unboxingが働くよ”
というマーカーインタフェースがない(Numberクラスはダメ)ので、ジェネリクス型で
記述した変数に対し演算子を用いて演算することはできない。
「ジェネリクスと四則演算」の組み合わせはC#(.net)でも利用できないようで、
「わんくま同盟」の方のblogにその辺の記事をみかけた。
でも演算子オーバーロードのあるC#(.net)は将来に希望を持てそうでうらやましい。
コメント