javaで、型の違う配列での四則演算がしたい

javaで、型の違う配列での四則演算をやりたくていろいろ調べたんですが、やっぱそのままじゃ無理そう。

なぜこんなことをやろうと思ったかといえば、

このブログの最初の記事でmatrixクラスとかを作っていたんですが、

int型のmatrixでも、double型のmatrixでも、1つの関数とかで

同じ挙動を実現したいと思ったのが発端。

たとえば以下のようなメソッドを考えます。

public static double[][] plus(double[][] matrix, double[][] target)

{

double[][] result = new double[matrix.length][matrix[0].length];

for(int i=0; i<matrix.length; i++ )

for(int j=0; j<matrix[0].length; j++ )

result[i][j] = matrix[i][j]+target[i][j];

return result;

}

この処理を、以下のようにint配列でも使いたいのです。

int ho = {1, 2};

int ge = {3, 4};

double hoge = plus(ho,ge);

かといって、関数のオーバーロードを型の種類ごとに用意するのは

保守性が悪くなりますし、コード量も多くなりますので、

なるべくどの型でも使える関数みたいなものを用意したいです。

ただ、どの型でも使える関数というのが、どうもjavaでは容易ではないようです。

配列であってもキャストで(int)doubleと書ければ良いんですがね。

候補として考えたのは以下の3つ。

①Objecti型を使う

②Generic型を使う

③型変換メソッドを作る

他にもラムダ式を用いるとかがあると思いますが

java 1.5上での開発のためここでは考えません。

①、②の方法ではObject型やジェネリック型自体に四則演算がないので、

そのままでは使えません。配列要素の入れ替えとかなら出来ると思います。

結局、ちょっとオーバーヘッドが大きいけど、③の型変換メソッドを作って

入れるのが一番手っ取り早いし実現性も高いかなと思います。

#そもそもこんなmatrixのメソッドはdouble以外で使わなければいいんですが、

 使いたくなるシチュエーションがあるんですよね。。。。