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なんか使わずオーバーロードメソッドで十分と)
 
 

コメント

このブログの人気の投稿

日食ツアーその後

NashornがOpenJDKのリポジトリに入ってたのでビルドしてみた

Javaのクロージャをいじってみた。(1)