Articles

Sådan bruges klasse i Java?

alt, hvad vi ved, er “alle forekomster af en hvilken som helst klasse deler den samme java.lang.Klasse objekt af den type klasse ”

e.g)

Student a = new Student();Student b = new Student();

derefter a.getClass() == b.getClass() er sandt.

Antag nu

Teacher t = new Teacher();

uden generika er nedenstående muligt.

Class studentClassRef = t.getClass();

men det er forkert nu ..?

e.g) public void printStudentClassInfo(Class studentClassRef) {} kan kaldes med Teacher.class

Dette kan undgås ved hjælp af generiske lægemidler.,

Class<Student> studentClassRef = t.getClass(); //Compilation error.

Hvad er nu T ?? T er typeparametre (også kaldet typevariabler); afgrænset af vinkelbeslag (<>), følger klassenavnet.
T er bare et symbol, som et variabelnavn (kan være et hvilket som helst navn) erklæret under skrivning af klassefilen. Senere vil T blive erstattet med
gyldig Klasse navn under initialisering (HashMap<String> map = new HashMap<String>();)

e.g) class name<T1, T2, ..., Tn>

Class<T> repræsenterer en klasse objekt af specifikke class type ‘T‘.,

Antage, at din klasse med metoder til at arbejde med ukendt type parametre som nedenfor

Her T kan bruges som String type som CarName

ELLER T kan bruges som Integer type som modelNumber,

ELLER T kan bruges som Object type som gyldige bil instans.

nu her er ovenstående den enkle POJO, som kan bruges forskelligt ved kørsel.
samlinger f. eks) liste, sæt, Hashmap er bedste eksempler, som vil arbejde med forskellige objekter som pr erklæringen af T, men når vi erklærede T som streng
e.,g) HashMap<String> map = new HashMap<String>(); så vil det kun acceptere String Class instance objects.

generiske metoder

generiske metoder er metoder, der introducerer deres egne typeparametre. Dette svarer til at erklære en generisk type, men typeparameterens omfang er begrænset til den metode, hvor den er erklæret. Statiske og ikke-statiske generiske metoder er tilladt såvel som generiske klassekonstruktører.syntaksen for en generisk metode inkluderer en typeparameter, indvendige vinkelbeslag, og vises før metodens returtype., For generiske metoder skal afsnittet type parameter vises før metodens returtype.

Her <K, V, Z, Y> er angivelse af typer, der anvendes i metoden argumenter, der bør før tilbagevenden type, som er boolean her.

i nedenstående; typedeklaration <T> er ikke påkrævet på metodeniveau, da den allerede er erklæret på klasseniveau.

class MyClass<T> { private T myMethod(T a){ return a; }}

men nedenfor er forkert, da parametre på klasseniveau K, V, Z og Y ikke kan bruges i en statisk sammenhæng (statisk metode her).,

andre gyldige scenarier er

, og endelig kræver statisk metode altid eksplicit <T>erklæring; det vil ikke stamme fra klasseniveau Class<T>. Dette er på grund af klasse niveau T er bundet med forekomst.

Læs også begrænsninger for generiske

jokertegn og Undertypning

skriv argument for en generisk metode