Ich schreibe ein kleines Paket von Sortierfunktionen, die an einem Objekt der Klasse SortableArray<T extends Comparable<T>>
arbeiten, weil ich primitive Objekte wie int
sortieren kann, muss ich die Grundelemente in umbrechen ein Klassenobjekt, in diesem Fall speziell Integer
. Also überlastete ich meinen Konstruktor, um ein Array vom Typ int
zu nehmen, wickeln Sie jedes in eine Integer
, speichern Sie es in einem Array, temp
, und zeigen Sie dann GenList
auf temp
. Ich habe eine Besetzung von (T[])
hinzugefügt, um die IDE glücklich zu machen, aber jetzt habe ich eine unkontrollierte Art Warnung.Ungeprüfte Cast-Warnung beim Umbrechen von Primitiven für generisches Array
Hier ist mein Code:
package sorts;
public class SortableArray<T extends Comparable<T>> {
T[] GenList;
public SortableArray(T[] theList) {
GenList = theList;
}
public SortableArray(int[] theList) {
Integer[] temp = new Integer[theList.length];
for(int i = 0; i < theList.length; i++) {
temp[i] = new Integer(theList[i]);
}
GenList = (T[]) temp; //warning here
}
}
Soll ich die Warnung nur unterdrücken, oder gibt es einen sicheren Ansatz?
Vielen Dank für Ihre Antworten.
ich wirklich hatte gehofft, eine Lösung zu finden, die mir die primitive im Konstruktor zu wickeln erlaubt, aber das würde bedeuten, meinen Kuchen zu bekommen und ihn auch zu essen. Ihre Antwort war aufschlussreich und ich werde sie nutzen! –