Ich spiele mit Code-Katas herum und versuche, Java-Generika gleichzeitig besser zu verstehen. Ich habe diese kleine Methode, die Arrays ausgibt, wie ich sie gerne sehe, und ich habe ein paar Hilfsmethoden, die ein Array von 'Dingen' und einem Index akzeptieren und das Array der 'Dinge' über oder unter dem Index zurückgeben (es ist ein binärer Suchalgorithmus).Können Sie ein int-Array an eine generische Methode in Java übergeben?
Zwei Fragen,
# 1 Kann ich die Besetzung zu T in splitBottom und splitTop vermeiden? Es fühlt sich nicht richtig an, oder ich gehe in die falsche Richtung (sag mir nicht, ob ich Python benutzen soll ...;))
# 2 Muss ich separate Methoden schreiben, um mit Primitiven umzugehen Arrays oder gibt es eine bessere Lösung?
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};
// ???
}
}
Das können Sie nicht mit Generics machen - das führt zu einem inkompatiblen Typfehler. – hbw
@htw können Sie mehr erklären? – blank