2013-07-29 10 views

Antwort

4

Dies liegt daran, dass die parameterlose toArray ein Array von Object s produziert. Sie müssen die Überlastung nennen, die das Ausgangs Array als Parameter übernimmt, und eine Reihe von String s passieren, wie folgt aus:

String[] names = (String[]) list.toArray(new String[list.size()]); 

In Java 5 oder neuer Sie die Besetzung fallen kann.

String[] names = list.toArray(new String[list.size()]); 
+2

Ist das nicht die Besetzung hier überflüssig? Ich habe keinen Compiler zur Hand, aber ich verstehe nicht warum. Auch ein Link zu einer Erklärung über Co/Kontra-Varianz würde die Antwort vervollständigen, denke ich. – Voo

+0

@Voo Nur in Java 5 und höher; vor Java 5 war es notwendig. – dasblinkenlight

+0

@dasblinkenlight Ich wusste nicht, dass Java 5 immer noch häufig verwendet wurde. –

0

Sie versuchen, aus einer Klasse von Object[] zu werfen. Die Klasse selbst ist ein Array vom Typ Object. Sie müssten einzeln nacheinander die Elemente zu einem neuen Array hinzufügen.

Oder Sie könnten das Verfahren bereits für die Umsetzung verwenden, um dies zu tun:

list.toArray(new String[list.size()]); 
Verwandte Themen