Java @ SafeVarargs Kommentar

1. Oversikt

I denne raske opplæringen tar vi en titt på @SafeVarargs kommentar.

2. Den @SafeVarargs Kommentar

Java 5 introduserte begrepet varargs, eller en metodeparameter med variabel lengde, samt parametriserte typer.

Å kombinere disse kan føre til problemer for oss:

offentlig statisk T [] usikker (T ... elementer) {returelementer; // usikre! aldri returnere et parameterisert varargs-array} offentlig statisk T [] ødelagt (T seed) {T [] plante = usikker (seed, seed, seed); // gått i stykker! Dette vil være et objekt [] uansett hva T er returanlegg; } offentlig statisk tomrom plante () {String [] planter = ødelagt ("frø"); // ClassCastException}

Disse problemene er vanskelige for en kompilator å bekrefte, og det gir derfor advarsler når de to kombineres, som i tilfelle usikre:

advarsel: [ukontrollert] Mulig haugforurensning fra parametriserte vararg type T offentlig statisk T [] usikker (T ... elementer) {

Denne metoden, hvis den brukes feil, som i tilfelle gått i stykker, vil forurense en Gjenstand[] array i haugen i stedet for den tiltenkte typen b.

For å klemme denne advarselen kan vi legge til @SafeVarargs kommentar på endelige eller statiske metoder og konstruktører.

@SafeVarargs er som @SupressWarnings ved at det tillater oss å erklære at en bestemt kompilatorvarsel er en falsk positiv. Når vi har forsikret oss om at våre handlinger er trygge, kan vi legge til denne kommentaren:

offentlig klasse Maskin {private Listeversjoner = ny ArrayList (); @SafeVarargs offentlig endelig ugyldig safe (T ... toAdd) {for (T version: toAdd) {versions.add (versjon); }}}

Sikker bruk av varargs er et vanskelig begrep i seg selv. For mer informasjon har Josh Bloch en god forklaring i sin bok, Effektiv Java.

3. Konklusjon

I denne raske artikkelen så vi hvordan du bruker @SafeVarargs kommentar i Java.

Den fullstendige kildekoden for eksemplene finner du på GitHub.


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