Anotácia Java @SafeVarargs

1. Prehľad

V tomto rýchlom výučbe sa pozrieme na @SafeVarargs anotácia.

2. The @SafeVarargs Anotácia

Java 5 predstavila koncept varargs alebo parameter metódy s premennou dĺžkou, ako aj parametrizované typy.

Ich kombinácia nám môže spôsobiť problémy:

public static T [] nebezpečný (T ... prvky) {návratové prvky; // nebezpečné! nikdy nevracajte parametrizované pole varargs} verejné statické T [] nefunkčné (T semeno) {T [] rastlina = nebezpečné (semeno, semeno, semeno); // zlomené! Toto bude Objekt [] bez ohľadu na to, čo T je návratová rastlina; } public static void plant () {String [] plants = broken ("seed"); // ClassCastException}

Tieto problémy sú pre kompilátora zložité na potvrdenie, a preto bude varovať vždy, keď dôjde k ich skombinovaniu, ako napríklad v prípade nebezpečné:

varovanie: [nezačiarknuté] Možné znečistenie haldy z parametrického vararg typu T verejné statické T [] nebezpečné (T ... prvky) {

Táto metóda, ak sa používa nesprávne, ako v prípade zlomený, bude znečisťovať Objekt [] pole do haldy namiesto zamýšľaného typu b.

Na potlačenie tohto varovania môžeme pridať znak @SafeVarargs anotácia na finálnych alebo statických metódach a konštruktoroch.

@SafeVarargs je ako @SupressWarnings v tom, že nám umožňuje vyhlásiť, že varovanie konkrétneho prekladača je falošne pozitívne. Len čo zaistíme bezpečnosť našich akcií, môžeme pridať túto anotáciu:

verejná trieda Stroj {verzie súkromného zoznamu = nový ArrayList (); @SafeVarargs public final void safe (T ... toAdd) {for (T version: toAdd) {versions.add (version); }}}

Bezpečné použitie varargov je sama o sebe zložitá koncepcia. Pre viac informácií má Josh Bloch skvelé vysvetlenie vo svojej knihe Effective Java.

3. Záver

V tomto rýchlom článku sme videli, ako používať @SafeVarargs anotácia v Jave.

Celý zdrojový kód príkladov nájdete na GitHub.


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