Kuinka käyttää luokkaa Java?
kaikki mitä tiedämme on ”kaikki tapaukset, joissa jokin luokka jakaa saman Javan.lang.Luokan object, että tyyppi luokan”
e.g)
Student a = new Student();Student b = new Student();
Sitten a.getClass() == b.getClass()
on totta.
Nyt oletamme
Teacher t = new Teacher();
ilman geneeristen alla on mahdollista.
Class studentClassRef = t.getClass();
Mutta tämä on väärin nyt ..?
e.g) public void printStudentClassInfo(Class studentClassRef) {}
voidaan kutsua Teacher.class
Tämä voidaan välttää käyttämällä geneerisiä.,
Class<Student> studentClassRef = t.getClass(); //Compilation error.
Nyt mikä on T ?? T on tyyppi parametrit (kutsutaan myös tyypin muuttujat); rajaamaa kulmasulkeet (<>), seuraa luokan nimi.
T on vain symboli, kuten muuttujan nimi (voi olla mikä tahansa nimi), joka ilmoitetaan luokkatiedoston kirjoittamisen aikana. Myöhemmin, että T on substituoitu
pätevä Luokan nimi alustuksen (HashMap<String> map = new HashMap<String>();
)
e.g) class name<T1, T2, ..., Tn>
Class<T>
edustaa luokan objekti tietyn luokan tyyppinen ’T
’.,
Oletetaan, että luokan menetelmiä on työskennellä tuntematon tyyppi parametrit kuten alla.
Tässä T voidaan käyttää String
tyyppi kuin CarName
TAI T voidaan käyttää Integer
tyyppi kuin modelNumber,
TAI T voidaan käyttää Object
kirjoita voimassa auton esimerkiksi.
tässä edellä on yksinkertainen ILOKSI, joita voidaan käyttää eri runtime.
Kokoelmat e.g) Luettelo, Asettaa, Hashmap ovat parhaita esimerkkejä, jotka toimivat eri esineitä kohti julistuksen T, mutta kun me julisti T as String
e.,g) HashMap<String> map = new HashMap<String>();
sitten se hyväksyy vain String Class instance-objektit.
geneeriset menetelmät
geneeriset menetelmät ovat menetelmiä, jotka ottavat käyttöön omat tyyppiparametrinsa. Tämä on samankaltainen kuin yleisluontoisen tyypin ilmoittaminen, mutta tyyppiparametrin soveltamisala rajoittuu menetelmään, jossa se ilmoitetaan. Staattiset ja ei-staattiset geneeriset menetelmät ovat sallittuja, samoin kuin geneeriset luokan konstruktorit.
– syntaksi a-yleinen menetelmä sisältää tyyppi-parametrin sisällä kulma suluissa, ja näkyy ennen metodin paluuarvon tyyppi., Yleisissä menetelmissä tyyppiparametriosion on oltava ennen menetelmän palautustyyppiä.
Täältä <K, V, Z, Y>
on ilmoitus tyypit menetelmässä käytetään argumentteja, jotka olisi ennen paluuta tyyppi, joka on boolean
täällä.
alla; tyyppi ilmoitus <T>
ei tarvita silloin, menetelmän taso, koska se on jo ilmoitettu klo luokan tasolla.
class MyClass<T> { private T myMethod(T a){ return a; }}
Mutta alla on väärässä luokan-tason tyyppi parametrit K, V, Z ja Y ei voi käyttää staattista yhteydessä (staattinen menetelmä täällä).,
MUUT VOIMASSA olevat SKENAARIOT OVAT
Ja lopulta Staattinen menetelmä tarvitsee aina nimenomaista <T>
ilmoitus; Se ei perustu luokan tasolla Class<T>
. Tämä johtuu siitä, että luokka T on sidottu esimerkiksi.
lue Myös Rajoituksia Geneeristen
Yleismerkkejä ja Alatyypitys
tyyppi argumentti on yleinen menetelmä