Computers, Programmering
Java Generics: beschrijving en methoden
Te beginnen met de verschijning van de Java-taal heeft een hoop veranderingen, die ongetwijfeld positieve momenten bracht in zijn functionaliteit ondergaan. Eén van deze belangrijke veranderingen is de introductie van Java Generic of generalisaties. Deze functionaliteit niet alleen de taal meer flexibel en veelzijdig, maar ook veel veiliger in termen van het brengen van de soorten gegevens.
Het feit is dat vóór de invoering van generieke geneesmiddelen in Java generieke code kunnen worden gecreëerd, niet alleen in termen van de type-aanduiding Object. Dergelijke koppelingen kunnen elk object worden toegewezen. Immers, klassen in Java zijn impliciete klasse Object erfgenamen. Deze benadering is een mogelijke bron van veel fouten elementen met betrekking tot de veiligheid van de apparente omzetting van een object uit het object naar het doeltype. Bij het gebruik van generalisaties alle afgietsels worden impliciet en automatisch uitgevoerd, zelfs de kans op fouten te elimineren.
Java Generics: beschrijving en voorbeeld
Laten we eens een eenvoudig voorbeeld van de toepassing van generalisatie naar reguliere lessen in de afbeelding hieronder. En vervolgens overgaan tot een grondig onderzoek van alle subtiliteiten en nuances van Java Generic.
Besteed aandacht aan de manier waarop de klasse verklaring optreedt Pair. Direct na de klassenaam open hoeksteunen, waarbij de letter T. aangegeven is een soort vulstof, die in de werkwijze van een instantie van deze klasse wordt vervangen door een bepaald type. Het ziet er als volgt uit: Paar
Opmerking: beginnend met de achtste uitvoering van de Java vermelding van het doeltype bij het declareren referentiehoek haakjes in de constructor kan leeg worden gelaten. Zo kan bijvoorbeeld worden herschreven als hierboven: Paar
Wanneer een klasse wordt verklaard op een zodanige wijze, dan in zijn lichaam in plaats van specifieke soorten gebieden, links, objecten geretourneerd door de methoden die u kunt die brief gebruiken. Aangezien T bij het maken van de objectklasse wordt vervangen door een bepaald type, eerste en tweede velden in dit geval van het type integer zijn.
In de context van de argumenten en firstItem secondItem, naar de bevoegde constructeur moet van het type integer of subklasse. Als u probeert een data-type dat afwijkt van wat is opgegeven is bij het maken van een object te verzenden, zal de compiler niet laten deze fout. Dus de argumenten constructor wanneer een object is als volgt: Het paar
Gegeneraliseerd worden met verschillende parameters klasse types
In algemene klassen kunnen maken voorts meerdere parameters van het type die in hoekijzers een komma. Ontworpen door een case Pair klasse is hieronder weergegeven.
Zoals u kunt zien, wanneer u een exemplaar van deze klasse te creëren in de hoek tussen haakjes moet hetzelfde aantal types als parameters aan te geven. Als je bekend bent met dit soort gegevens structuur als een kaart, kunt u zien dat het precies hetzelfde principe gebruikt. Daar het eerste argument geeft het type van de belangrijkste, en de tweede - de aard van de waarde. Opgemerkt wordt dat wegens verzonden als een object argumenten kunnen overlappen. Bijvoorbeeld, de volgende advertentie Pair klasse-instantie is absoluut correct: Pair
Sommige functies van generalisaties
Voordat we verder gaan, moet worden opgemerkt dat de Java-compiler geen verschillende versies van de klasse Pair schept. In feite is in het proces van het samenstellen van een algemene soort alle informatie wordt gewist. In plaats daarvan, breng je de juiste types, het creëren van een speciale versie van de klasse Pair. Echter, in het programma is er nog steeds slechts een generieke versie van de klas. Dit proces heet in Java Generic reiniging type.
Let op een belangrijk punt. Links naar verschillende versies van hetzelfde java algemene klasse kunnen niet wijzen op één en hetzelfde object. Dat wil zeggen, stel dat we hebben twee links: Paar
Beperkingen op generieke klassen
Het is belangrijk om te weten dat generalisaties alleen kan worden toegepast op types verwijzen, dat wil parameters algemene klasse java argument moet een klasse type zijn passeren. Deze eenvoudige types, zoals bijvoorbeeld dubbele of lange, niet overdraagbaar. Met andere woorden, wordt de volgende regel Pair klasse verklaring niet toegestaan: Paar
Een andere ernstige beperking is het onvermogen om een exemplaar van het type parameter te maken. Zo zal de volgende regel een compilatie fout veroorzaken: T eerste = new T (). Dit ligt voor de hand, omdat je niet van tevoren weten of een argument doorgegeven een volledige klas of abstract, of zelfs interface. Hetzelfde geldt voor het creëren van arrays.
beperkte types
Vaak zijn er situaties waarin het noodzakelijk is om de lijst van soorten die als een argument om algemene klasse java kan worden doorgegeven beperken. Laten we aannemen dat in onze klasse Pair willen we alleen de numerieke waarden voor nieuwe wiskundige bewerkingen op hen in te kapselen. Om dit te doen moeten we de bovengrens van het type parameter te definiëren. Het wordt gerealiseerd door middel van een superklasse advertenties geërfd argumenten doorgegeven hoekijzers. Het zal er als volgt uit: class Pair
Dit is een veel voorkomende receptie. Dergelijke beperkingen worden vaak gebruikt om het type compatibiliteit parameters in één en dezelfde klasse. Neem het voorbeeld in onze klasse Pair: klasse Pair
Het beperken van de "bottom" is precies dezelfde manier, maar in plaats van het woord strekt zich uit tot het woord super spellen. Dat is geclassificeerd klasse Pair
Generieke Java methoden en constructeurs
In Java, generalisaties kan niet methoden alleen toegepast op de klassen, maar ook. Zo kan bijvoorbeeld een generieke methode worden verklaard in een reguliere klas.
Zoals te zien in de figuur hierboven, de advertentie algemene methode is geen big deal. Genoeg voor de terugkeer type van een methode om de hoekbeugels gebracht en ofwel het type parameters bevat.
Als alles op dezelfde manier wordt gedaan om de bouwer:
Punthaakjes in dit geval voorgelegd aan de naam van de ontwerper, want hij heeft geen return waarde. Het resultaat van beide programma's zijn:
geheel getal
snaar
Similar articles
Trending Now