Java: Type safety: Ein generisches Array von A wird für einen varargs-Parameter erstellt [duplicate]

7

Stellen Sie sich folgendes vor:

%Vor%

Nun möchte ein anderer Code foo verwenden:

%Vor%

Dies gibt mir die Warnung

%Vor%

Also habe ich den Aufruf folgendermaßen geändert:

%Vor%

Dies gibt mir immer noch die gleiche Warnung.

Warum? Wie kann ich das beheben?

    
Albert 20.10.2010, 19:30
quelle

3 Antworten

14

Sie können diese Warnung nur mit @SuppressWarnings("unchecked") unterdrücken. Java 7 wird diese Warnung für den Client-Code eliminieren und sie stattdessen in die Deklaration von foo(A... a) und nicht in die Aufruf-Site verschieben. Sehen Sie den Projekt Coin-Vorschlag hier .

    
ColinD 20.10.2010, 19:37
quelle
5

Bearbeiten: Die Antwort wurde aktualisiert, um anzuzeigen, dass die Frage aktualisiert wurde, um anzuzeigen, dass A tatsächlich generisch ist.

Ich würde denken, dass A ein generischer sein muss, um diesen Fehler zu bekommen. Ist A ein generisches Objekt in Ihrem Projekt, aber das obige Codebeispiel lässt die generische Deklaration aus?

Wenn ja, Da A generisch ist, können Sie die Warnung nicht sauber umgehen. Varargs werden mit einem Array implementiert und ein Array unterstützt keine generischen Arrays, wie hier erklärt:

Java-Generika und Varargs

    
Bert F 20.10.2010 19:40
quelle
0

Sie können dies versuchen:

%Vor%     
Eugene Kuleshov 20.10.2010 19:47
quelle