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.