2017-07-27 5 views
1

Ich schrieb:Generisches unmodifiableList

this.array = (X[]) Array.newInstance(init.getClass(), size); 

// ... 

public List<X> get() {   
    return Collections.<X>unmodifiableList(this.array); 
} 

Aber ich bekomme die Fehlermeldung:

unmodifiableList in Collections cannot be applied to (X[])

Wie kann ich eine generische unveränderbare Liste zu erstellen?

+0

'Rückkehr Collections.unmodifiableList (new Arraylist <>());' – Lino

+0

@Lino Sie meinen, 'Collections.emptyList()'? – shmosel

+0

@shmosel, als ich den Kommentar, den ich geschrieben habe, noch einmal gelesen habe, scheint es mir ziemlich falsch zu sein, da OP wahrscheinlich ein bestücktes Array hat und kein leeres. Aber wenn er eine leere Liste zurückgeben möchte, ist Ihr Ansatz besser – Lino

Antwort

1

Sie können dies tun:

public List<X> get() { 
    return Collections.unmodifiableList(Arrays.asList(this.array)); 
} 
+0

Die erste Option wird nicht funktionieren, da es keinen ArrayList-Konstruktor gibt, der Array akzeptiert. Der zweite ist aber korrekt –

+0

Cool, es ist jetzt vollständig richtig, obwohl es eine zweite Antwort identisch macht. –

2

Sie müssen es so machen:

public List<X> get() 
{ 
    List<X> modifiableList = Arrays.asList(this.array); 
    return Collections.unmodifiableList(modifiableList); 
}