21 Stimmen

Warum nimmt Arrays.sort Object[] und nicht Comparable[]?

Ich habe mich gefragt, warum die Sortiermethode der Klasse Arrays nach einem Parameter vom Typ Object[] fragt. Warum ist der Parameter nicht vom Typ Comparable[]. Wenn Sie keine Comparable[] übergeben, wird eine ClassCastException erzeugt.

Warum ... public static void sort(Object[] a) und nicht public static void sort(Comparable[] a) ? Danke

9voto

Alexander Torstling Punkte 17776

Denn die zweite Form würde eine Neuzuweisung des Feldes erfordern. Selbst wenn Sie wissen, dass Ihr Array nur Comparables enthält, können Sie es nicht einfach in Comparable[] umwandeln, wenn der ursprüngliche Typ Object[] war, da der Arraytyp nicht übereinstimmt.

Das können Sie tun:

Object[] arr = new String[0];
String[] sarr = (String[]) arr;

Aber das können Sie nicht tun:

Object[] arr = new Object[0];
String[] sarr = (String[]) arr;

Es ist also eine verfrühte Optimierung :)

4voto

BalusC Punkte 1034465

Sonst können Sie nicht bestehen Object[] in.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X