– Hvordan å bruke Klasse i Java?
Alle vet vi er «Alle forekomster av en hvilken som helst klasse deler den samme java.lang.Klasse objektet av denne typen av klasse»
e.g)
Student a = new Student();Student b = new Student();
Så a.getClass() == b.getClass()
er sant.
Nå anta
Teacher t = new Teacher();
uten generiske nedenfor er mulig.
Class studentClassRef = t.getClass();
Men dette er feil nå ..?
e.g) public void printStudentClassInfo(Class studentClassRef) {}
kan bli kalt med Teacher.class
Dette kan unngås ved å bruke generiske legemidler.,
Class<Student> studentClassRef = t.getClass(); //Compilation error.
Nå hva er T ?? T er av type parametre (også kalt type variabler); avgrenset av vinkelparenteser (<>), følger klasse navn.
T er bare et symbol, som en variabel navn (kan være et hvilket som helst navn) erklærte under skriving av klasse-fil. Senere at T vil bli erstattet med
gyldig Klasse navn under initialisering (HashMap<String> map = new HashMap<String>();
)
e.g) class name<T1, T2, ..., Tn>
Så Class<T>
representerer et objekt av klassen bestemt klasse, type ‘T
‘.,
Anta at din klasse metoder har til å arbeide med ukjent type parametere som under
Her T kan brukes som String
type som CarName
ELLER T kan brukes som Integer
type som modelNumber,
ELLER T kan brukes som Object
type som gyldig bil eksempel.
Nå her over er det enkle POJO som kan bli brukt annerledes ved kjøring.
Samlinger e.g) Listen, Angi, Hashmap er beste eksemplene som vil arbeide med ulike gjenstander som angitt i erklæringen av T, men når vi erklært T som String
e.,g) HashMap<String> map = new HashMap<String>();
Så vil det bare godta String Klasse forekomst objekter.
Generiske Metoder
Generiske metoder er metoder som introduserer sin egen type parametere. Dette ligner på å erklære en generisk type, men parameter ‘ s anvendelsesområde er begrenset til den metoden der den er deklarert. Statiske og ikke-statiske generiske metoder er tillatt, samt generisk klasse konstruktører.
syntaksen for en generisk metode inkluderer en parameter, inne i vinkelparenteser, og vises før metoden er tilbake type., For generiske metoder, parameter-delen må vises før metoden er tilbake type.
Her <K, V, Z, Y>
er erklæringen av typer som brukes i metoden argumenter som bør før retur typen som er boolean
her.
I de nedenfor; type erklæring <T>
er ikke nødvendig ved metoden nivå, siden den allerede er deklarert i klassen nivå.
class MyClass<T> { private T myMethod(T a){ return a; }}
Men nedenfor er feil som klasse-nivå type parametre K, V, Z og Y kan ikke brukes i et statisk perspektiv (statisk metode her).,
ANDRE GYLDIG SCENARIER
Og til slutt Statisk metode trenger alltid eksplisitt <T>
erklæring; Det vil ikke stammer fra klasse nivå Class<T>
. Dette er på grunn av Klasse nivå T er bundet med eksempel.
les Også Restriksjoner på Generiske
Jokertegn og Subtyping
type argument for en generisk metode