何度もすいません

void f(int[] a) {
for(i : a) {
double d = (double)i
同じ処理
}
}

void f(double[] a) {
for(d : a) {
同じ処理
}
}

みたいにintとdouble配列を受け取って同じ処理するだけの関数が必要なんですが
まとめて記述することってできないでしょうか
そこそこ速度が要求されるので最初にキャストした配列を作って渡すのも若干無駄だし

関数型言語風にかくなら

void f_core(<T>[] d, Function<<T>, double> cast) {
for(x : a) {
double d = cast.apply(x);
同じ処理
}
}

void f(int[] a) { f_core(a, x => (double)x); }
void f(double[] a) { f_core(a, x => x); }

みたいにかければいいんですけどJavaで任意型のメソッドって作ったりうけわたしたりってできますか?