Java – Generics

Advertenties

Het zou mooi zijn als we een enkele sorteermethode zouden kunnen schrijven die de elementen in een Integer-array, een String-array, kan sorteren , of een willekeurig type array dat ordening ondersteunt.

Generieke Java-methoden en generieke klassen stellen programmeurs in staat om met een enkele methode-declaratie een set gerelateerde methoden of met een enkele klassendeclaratie een set van gerelateerde typen.

Generics bieden ook beveiliging tijdens compilatie, waardoor programmeurs ongeldige typen kunnen onderscheppen tijdens het compileren.

Met behulp van het Java Generic-concept kunnen we een generieke methode schrijven voor het sorteren van een array van objecten, roep vervolgens de generieke methode aan met Integer arrays, Double arrays, String arrays enzovoort, om de array-elementen te sorteren.

Generic Methods

Je kunt schrijven een enkele generieke methode-declaratie die ca. gevuld met argumenten van verschillende typen. Op basis van de typen argumenten die aan de generieke methode worden doorgegeven, behandelt de compiler elke methodeaanroep op de juiste manier. Hieronder volgen de regels om generieke methoden te definiëren –

  • Alle generieke methode-declaraties hebben een typeparameter-sectie die wordt afgebakend door punthaken (< en >) die voorafgaat aan de methode “s return type (< E > in het volgende voorbeeld ).

  • Elke typeparameter-sectie bevat een of meer typeparameters gescheiden door komma’s. Een typeparameter, ook wel een typevariabele genoemd, is een identifier die een algemene typenaam specificeert .

  • De type-parameters kunnen worden gebruikt om het retourtype te declareren en fungeren als tijdelijke aanduidingen voor de typen argumenten die aan de generieke methode worden doorgegeven, die bekend staan als werkelijke type-argumenten.

  • De body van een generieke methode wordt gedeclareerd zoals die van elke andere methode. Merk op dat typeparameters alleen referentietypes kunnen vertegenwoordigen, niet primitieve types (zoals int, double en char).

Voorbeeld

Het volgende voorbeeld illustreert hoe we kan een array van verschillende typen afdrukken met een enkele generieke methode –

Dit levert het volgende resultaat op –

Uitvoer

Array integerArray contains:1 2 3 4 5 Array doubleArray contains:1.1 2.2 3.3 4.4 Array characterArray contains:H E L L O

Begrensde typeparameters

Het kan voorkomen dat u “de soorten typen wilt beperken die mogen worden doorgegeven aan een typeparameter. Een methode die op getallen werkt, kan bijvoorbeeld wil alleen instanties van Number of zijn subklassen accepteren. Hiervoor zijn bounded type-parameters.

Om een bounded type-parameter te declareren, vermeldt u de naam van de typeparameter, gevolgd door het trefwoord extends, gevolgd door zijn bovengrens.

Voorbeeld

Het volgende voorbeeld illustreert hoe extends in algemene zin wordt gebruikt om ofwel “extends” (zoals in klassen) of “implementeert” (zoals in interfaces) te betekenen . Dit voorbeeld is een generieke methode om de grootste van drie vergelijkbare objecten te retourneren –

Dit levert het volgende resultaat op –

Uitvoer

Max of 3, 4 and 5 is 5Max of 6.6,8.8 and 7.7 is 8.8Max of pear, apple and orange is pear

Generieke klassen

Een generieke klassendeclaratie ziet eruit als een niet-generieke klassendeclaratie, behalve dat de klassenaam wordt gevolgd door een type parameter sectie.

Net als bij generiek methodes, kan de typeparameter-sectie van een generieke klasse een of meer typeparameters hebben, gescheiden door komma’s. Deze klassen staan bekend als klassen met parameters of typen met parameters, omdat ze een of meer parameters accepteren.

Voorbeeld

Het volgende voorbeeld illustreert hoe we een generieke klasse kunnen definiëren –

Dit levert het volgende resultaat op:

Uitvoer

Integer Value :10String Value :Hello World
Advertenties

Leave a Reply

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *