KompjûtersProgramming

Java generic: beskriuwing en metoades

Begjinnend mei it uterlik fan de Java taal hat ûndergien in soad feroarings, dy't grif brocht positive mominten yn syn funksjonaliteit. Ien fan dizze wichtige feroarings is de ynfiering fan Java Generic of generalisaasjes. Dizze funksjonaliteit net allinne om de taal mear fleksibele en alsidich, mar ek folle feiliger op it mêd fan oantekene gegevens typen.

It feit is dat foarôfgeande oan de yntroduksje fan generics yn Java generic koade koe oanmakke wurde, net allinnich yn termen fan it type referinsje Object. Soksoarte keppelings kinne tawiisd elts foarwerp. Ommers, klassen yn Java binne ymplisite Objekt klasse erfgenamten. Lykwols, dizze oanpak is in mooglike boarne fan in soad flaters yn ferbân mei feiligens typen yn 'e skyn bekearing fan in foarwerp út it objekt nei it doelwyt type. By it brûken fan generalisaasjes alle smyt wurde útfierd ymplisyt en automatysk, opheffing fan sels de mooglikheden foar flaters.

Java generic: beskriuwing en foarbyld

Nim no in ienfâldige foarbyld fan it tapassen fan feralgemienjen ta reguliere klassen yn de figuer hjirûnder. En dan fierder nei in detaillearre ûndersyk fan alle subtile en nuânses fan Java Generic.

Omtinken jaan oan de wize wêrop de klasse oanjefte optreedt Pair. Fuort nei de klasse namme, iepen hoeke heakjes, dy't oanjûn hat it letter T. It is in soarte fan vulstof, dy't yn it proses fan it ta stân in eksimplaar fan dizze klasse wurdt ferfongen troch in spesifyk type. It sjocht der as folget: Pair obj = nij Pair (). Dêrby moat opmurken wurde dat yn stee fan T kin spesifisearje gjin brief, mar, as in regel, brûk T, V of E.

Tink derom: begjinnend mei it achtste ferzje fan de Java, mei opjefte fan it doelwyt type doe't ferklearje referinsjepunt hoeke heakjes yn 'e constructor kin ledich litten wurde. Sa bygelyks kin wurde nij skreaun as hjirboppe: Pair obj = nij Pair <> ().

As in klasse wurdt ferklearre op sa'n wize, doe yn syn lichem ynstee fan spesifike soarten fjilden, keppelings, objekten werom troch de metoaden kinne jo brûk meitsje fan dy brief. Sûnt T by it meitsjen fan de klasse foarwerp wurdt ferfongen troch in bepaalde soarte, earste en twadde fjilden yn dit gefal sil wêze fan it type Integer.

Nei oanlieding fan de logika fan 'e arguminten en firstItem secondItem, ferwiisde nei it passend constructor moat ek wêze fan it type Integer of Subclass. As jo besykje te zenden een gegevens type, dat is wat oars út wat waard oantsjutte as it meitsjen fan in foarwerp, de gearstaller sil net litte dit fersin. Sa, de arguminten constructor doe't in foarwerp sil wêze as folget: Pair obj = nij Pair <> (nije Gehiele (1), nije Gehiele (2)). Itselde jildt foar de arguminten en metoaden setFirst setSecond. En sa't jim ha nei alle gedachten trochsjoen, metoades getFirst getSecond en sil weromkomme in wearde fan it type Integer.

Generalisearre mei ferskate parameters klasse soarten

Yn Generalisearre klassen kin ek ferklearje meardere parameters fan it type dy't ynsteld yn hoek heakjes mei in komma. Nij ynrjochte troch in saak Pair klasse wurdt presintearre hjirûnder.

Sa't jo sjen kinne, as jo meitsje in eksimplaar fan dizze klasse yn hoek heakjes moatte oanjaan itselde tal typen as parameter opjûn binne. As jo binne bekend mei dit soarte fan gegevens struktuer as Map, kinne jo sjen dat it brûkt krekt itselde prinsipe. Dêr, de earste argumint spesifisearret it type fan 'e kaai, en it twadde - it type fan de wearde. Dêrby moat opmurken wurde dat de soarten oerdraachbere doe't in foarwerp arguminten kinne oerlaapje. Bygelyks, de neikommende ad Pair klasse eksimplaar is perfoarst korrekt: Pair obj.

Guon funksjes fan generalisaasjes

Foardat gean fierder, dan moat sein wurde dat de Java gearstaller hat net oanmakke ferskillende ferzjes fan 'e klasse Pair. Yn feite, yn it proses fan it gearstallen fan in generalisearre type alle ynformaasje is wiske. Ynstee, jimme bringe de passend typen, it meitsjen fan in bysûndere ferzje fan de Pair klasse. Lykwols, yn it programma is der noch mar in generike ferzje fan 'e klasse. Dat proses hjit yn Java Generic cleaning type.

Opmerking in wichtich punt. Keppelings mei ferskate ferzjes fan deselde java generike klasse kin net ferwize nei ien en deselde foarwerp. Dat is, stel wy hawwe twa keppelings: Pair obj1 en Pair obj2. Dus, yn line obj1 = obj2 in flater. Hoewol't beide fariabelen binne fan it type Pair , de objekten dêr't se ferwize, binne oars. Dit is in prime foarbyld fan 'e types fan feiligens yn Java Generic.

Beheining op generic klassen

It is wichtich om te witten dat der generalisaasjes kinne tapast wurde allinne te Ingelân ferwize nei typen, dat is it barre parameters generyk klasse java argumint moat wêze in klasse type. Dy ienfâldige typen, lykas, bgl, dûbele of lang, kin net oerdroegen. Mei oare wurden, it neikommende line Pair klasse ferklearring is net tastien: Pair obj. Lykwols, dizze beheining is net in serieus probleem, as der in soartgelikense Java wrapper klasse foar elk primitive type. Strictly speaking, as de klasse Pair jo wolle encapsulate in hiel getal en Booleaanske wearde avtoupakovka docht alles foar jim: Pair obj = nij Pair <> (25, wier).

In oare serieuze beheining is it ûnfermogen te meitsjen in eksimplaar fan de parameter type. Bygelyks, de neikommende line sil feroarsaakje in kompilaasje flater: T earst = nij T (). Dat leit foar de hân, omdat jo net fan tefoaren witte oft in argumint passed in folsleine klasse of abstrakt, of sels ynterface. Itselde jildt foar it meitsjen fan rigen.

beheinde types

Hiel faak der binne situaasjes as is it nedich te beheinen de list fan typen dy kin wurde trochjûn as argumint om te java generyk klasse. Lit ús der fan út dat der yn ús klasse Pair wy wolle encapsulate allinne it numerike wearden foar fierder wiskundige operaasjes oan har. Te dwaan dat wy moatte beskiede hokker boppeste limyt fan de parameter type. It wurdt realisearre troch middel fan in superclass advertinsjes erfde alle arguminten yn hoeke heakjes. It sil sjen as folget: klasse Pair . Yn dizze wize, de gearstaller fynt dat ynstee fan de parameter T kin ferfongen wurde of Nûmer klasse of ien fan syn subclasses.

Dat is in mienskiplik resepsje. Sokke beheiningen wurde faak brûkt om te foarsjen komptabiliteit type parameters yn ien en deselde klasse. Tink oan it foarbyld yn ús klasse Pair: klasse Pair . Hjir wy fertelle de gearstaller dat it type T kin wêze willekeurige, en V type moat wêze itsij T type of ien fan syn subclasses.

Beheining fan it "boaiem" is krekt deselde wize, mar ynstee fan it wurd wreidet te staverjen it wurd super. Dat wurdt yndield klasse Pair seit dat ynstee fan T kin ferfongen wurde of in ArrayList, of hokker klasse of ynterface dat it erft.

Generic Java metoaden en konstrukteurstitel

Yn Java, generalisaasjes kinne tapast wurde net allinnich oan 'e klassen, mar ek metoaden. Bygelyks, in generike metoade kin ferklearre wurde yn in gewoane klaslokaal.

Lykas yn de figuer boppe, de advertinsje generalisearre metoade is gjin grut deal. Genôch foar de return type fan in metoade om de hoek heakjes en oantsjutte it type parameters yn harren.

As alles wurdt dien allyksa ta de constructor:

Hoek heakjes yn dit gefal set foar de namme fan de ûntwerper, want hy hat gjin werom wearde. It resultaat fan beide programma 's sille wêze:

integer

string

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 fy.delachieve.com. Theme powered by WordPress.