Mmmhh, creo que te entiendo, pero me temo que no es posible. O yo al menos desconozco como hacerlo.
Tu idea es poder usar un método que reciba un array de clase Object, para poder aplicarlo a cualquier clase: Alumno, Comercial, Persona, Vehiculo,... ya que todos son hijos de Object.
Pero además, hacerle pasar también de algún modo el nombre del método que se ha de usar.
Si quieres sumar edades:
public double genericoSumaArray (Object[] x, getEdad() );
Si quieres sumar sueldos:
public double genericoSumaArray (Object[] x, getSueldo() );
Si quieres sumar el peso de una flota de Camiones:
public double genericoSumaArray (Object[] x, getPeso() );
Etc...
Bien, como idea, es genial... pero que yo sepa, no es posible.
De todos modos, respecto a sumar, siempre son valores int, o double, o float.
Son tipos primitivos, pero que tienen su equivalente en clase POO
int -> Integer
double - Double
float -> Float
Así que puedes hacer que tu método genérico reciba simplemente el array Object, compruebe a que tipo de "instancia" pertenecen, castear el array a la clase correspondiente y hacerla suma.
Este método te sirve para sumar enteros, dobles o float
public double genericoSumaArray (Object[] x) {
double suma = 0;
if (x instanceof Integer[]) {
Integer[] enteros = (Integer[]) x;
for (Integer numInt: enteros)
suma = suma + numInt;
}
else if (x instanceof Float[]) {
Float[] flotantes = (Float[]) x;
for (Float numFlo: flotantes)
suma = suma + numFlo;
}
else if (x instanceof Double[]) {
Double[] dobles = (Double[]) x;
for (Double numDob: dobles)
suma = suma + numDob;
}
return suma;
}
Así si por ejemplo quieres sumar calificaciones, pues en lugar de hacerle llegar un array de Alumno[], construyes un array de Float[] con las calificaciones.
O un Float[] con salarios, o un Integer[] con entradas de cine vendidas, o lo que sea que puedas necesitar.