541 Stimmen

Mögliche Heap-Verschmutzung über varargs-Parameter

Soweit ich weiß, tritt dies in Java 7 bei der Verwendung von varargs mit einem generischen Typ auf;

Aber meine Frage ist

Was genau meint Eclipse mit der Aussage, dass seine Verwendung den Heap potenziell verschmutzen könnte?"

Und

Wie funktioniert die neue @SafeVarargs Vermerk dies verhindern?

1voto

Pavel Punkte 4572

Es ist ziemlich sicher, dass @SafeVarargs Anmerkung zu der Methode, wenn Sie die Art des Aufrufs kontrollieren können (z. B. eine private Methode einer Klasse). Sie müssen sicherstellen, dass nur die Instanzen des deklarierten generischen Typs an die Methode übergeben werden.

Wenn die Methode extern als Bibliothek exponiert ist, wird es schwierig, solche Fehler zu erkennen. In diesem Fall ist es am besten, diese Anmerkung zu vermeiden und die Lösung mit einem Auflistungstyp umzuschreiben (z.B. Collection<Type1<Type2>> ) anstelle von varargs ( Type1<Type2>... ).

Was die Namensgebung anbelangt, so ist der Begriff Haldenverschmutzung Phänomen ist meiner Meinung nach ziemlich irreführend. In der Dokumentation die eigentliche JVM Haufen ist kein Ereignis, das erwähnt wird. Es gibt eine Frage bei Software Engineering, die einige interessante Gedanken zur Benennung dieses Phänomens enthält.

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