Estoy jugando con algunos códigos katas y tratando de obtener una mejor comprensión de los genéricos de Java al mismo tiempo. Tengo este pequeño método que imprime arreglos como si quisiera verlos y tengo un par de métodos de ayuda que aceptan una matriz de 'cosas' y un índice y devuelve la matriz de las 'cosas' por encima o por debajo del índice (es un algoritmo de búsqueda binario).¿Se puede pasar una matriz int a un método genérico en Java?
Dos preguntas,
nº 1 puedo evitar el reparto de T en splitBottom y splitTop? No se siente bien, o estoy haciendo esto de la manera incorrecta (no me diga que use Python o algo así ...;))
# 2 ¿Tengo que escribir métodos separados para tratar con primitivos? matrices o hay una mejor solución?
public class Util {
public static <T> void print(T[] array) {
System.out.print("{");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
if (i < array.length - 1) {
System.out.print(", ");
}
}
System.out.println("}");
}
public static <T> T[] splitTop(T[] array, int index) {
Object[] result = new Object[array.length - index - 1];
System.arraycopy(array, index + 1, result, 0, result.length);
return (T[]) result;
}
public static <T> T[] splitBottom(T[] array, int index) {
Object[] result = new Object[index];
System.arraycopy(array, 0, result, 0, index);
return (T[]) result;
}
public static void main(String[] args) {
Integer[] integerArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
print(integerArray);
print(splitBottom(integerArray, 3));
print(splitTop(integerArray, 3));
String[] stringArray = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
print(stringArray);
print(splitBottom(stringArray, 3));
print(splitTop(stringArray, 3));
int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// ???
}
}
No se puede hacer eso con genéricos, lo que da como resultado un error de tipo incompatible. – hbw
@htw ¿Puedes explicar más? – blank