Typ annotaties in Java

Typ annotaties in Java

Met de introductie van Java 8 heeft de versie twee nieuwe functies geïntroduceerd, genaamd herhalende annotaties en typeannotaties. Als je tot die tijd annotaties in Java wilde gebruiken, kon je dat alleen doen in de declaraties. Met Java 8 kunt u nu annotaties toevoegen aan elk type gebruik. Waar u ook een type gebruikt (inclusief typen in declaraties, generieke en afgietsels), u kunt dat met een annotatie begeleiden.

Type annotatiesyntaxis

Java 8 kan typeannotaties declareren bij elk typegebruik. Een voorbeeld is het onderstaande fragment:

@Encrypted String-gegevens; Lijst met <@NonNull String> tekenreeksen; myGraph = ( @Onveranderlijke grafiek ) tmpGraph; U kunt eenvoudig een nieuwe typeannotatie invoeren. Het proces is vergelijkbaar met het definiëren van een annotatie met het ElementType.TYPE_PARAMETER-doel, ElementType.TYPE_USE-doel of beide doelen: @Target ( { ElementType.TYPE_PARAMETER, ElementType.TYPE_USE } ) public @interface Encrypted { }

Het doel ElementType.TYPE_PARAMETER betekent dat u de annotatie kunt schrijven op de declaratie van een typevariabele (bijv. klasse MyClass {….}). Het Element.Type.TYPE_USE betekent dat u de annotatie op elk gebruikstype kunt schrijven (namelijk typen in declaraties, generieke en afgietsels).

U kunt annotaties opslaan in klassenbestanden, maar dit heeft geen invloed op de uitvoering van het programma. U kunt bijvoorbeeld twee bestandsvariabelen en een verbinding declareren, zoals weergegeven in de onderstaande code:

Bestandsbestand = ….; @Encryted Bestand versleuteldBestand = …; @Open Verbindingsverbinding = …; Terwijl u het programma uitvoert, zal het resultaat hetzelfde zijn als u een van de twee bestanden doorgeeft aan de methode send() van de verbinding. connectie.send(bestand); connectie.send(encryptedFile);

 

Enkele voorbeelden van typeannotaties

@nonNull Lijst Lijst <@NonNull String> str Arrays <@NonNegative Integer> sort @Encypted File file @Open Connection connection void divideInteger (int a, int b) gooit @ZeroDivisior ArithmeticException

 

laat een reactie achter

Deze site gebruikt Akismet om spam te verminderen. Ontdek hoe uw reactiegegevens worden verwerkt.