Java @ SafeVarargs Annotation

1. Oversigt

I denne hurtige vejledning skal vi se på @SafeVarargs kommentar.

2. Den @SafeVarargs Kommentar

Java 5 introducerede begrebet varargs eller en metodeparameter med variabel længde samt parametriserede typer.

At kombinere disse kan skabe problemer for os:

offentlig statisk T [] usikker (T ... elementer) {returelementer; // usikre! returner aldrig et parameteriseret varargs array} offentlig statisk T [] brudt (T frø) {T [] plante = usikker (frø, frø, frø); // gået i stykker! Dette vil være et objekt [] uanset hvad T er returanlæg; } offentlig statisk tomrumsplante () {Streng [] planter = brudt ("frø"); // ClassCastException}

Disse problemer er vanskelige for en compiler at bekræfte, og det giver derfor advarsler, når de to kombineres, som i tilfældet med usikre:

advarsel: [ukontrolleret] Mulig dyngeforurening fra parametreret vararg type T offentlig statisk T [] usikker (T ... elementer) {

Denne metode, hvis den bruges forkert, som i tilfældet med gået i stykker, vil forurene en Objekt[] array i bunken i stedet for den tilsigtede type b.

For at squash denne advarsel kan vi tilføje @SafeVarargs kommentar om endelige eller statiske metoder og konstruktører.

@SafeVarargs er ligesom @SupressWarnings ved at det tillader os at erklære, at en bestemt kompilatoradvarsel er en falsk positiv. Når vi først er sikre på, at vores handlinger er sikre, vi kan tilføje denne kommentar:

public class Machine {private List versioner = ny ArrayList (); @SafeVarargs offentlig endelig ugyldig safe (T ... toAdd) {for (T version: toAdd) {version.add (version); }}}

Sikker brug af varargs er et vanskeligt koncept i sig selv. For mere information har Josh Bloch en god forklaring i sin bog Effektiv Java.

3. Konklusion

I denne hurtige artikel så vi, hvordan man bruger @SafeVarargs kommentar i Java.

Den fulde kildekode til eksemplerne kan findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found