– Szia Amigo!
"Most eljött a fő esemény ideje. Megismerkedünk a Class osztállyal, és érintjük a Reflectiont.
Mint valószínűleg már rájöttél, a Java-ban minden egy objektum. És mi kell egy objektumnak? Mit határoz meg az egyes objektumok miről van szó?"
"Osztály!"
"Rendben! Jól van. Minden objektumnak van egy osztálya. De visszatérve az objektumokhoz... Egyes objektumok teljesen tartalmaznak egy entitást, míg mások egyszerűen segítenek kezelni."
"Ez utóbbi típusba tartozik a FileOutputStream és a Thread . Thread objektum létrehozásakor új szál nem jön létre. A szálat a Java virtuális gép hozza létre a start() metódus meghívása után. Ez az objektum egyszerűen segít a folyamat kezelésében."
"Ugyanez a FileOutputStream esetében : a fájl lemezen van tárolva, az operációs rendszer pedig kezeli a tárolást és a hozzáférést. De a fájlobjektumokon keresztül tudunk vele kommunikálni, ismét a Java virtuális gép segítségével."
– Igen, ezt már értem.
"Szóval, van egy speciális osztály, az osztály az osztályokkal való interakcióra."
– Nem volt nehéz kitalálni.
"Igen. Valahányszor a Java virtuális gép új osztályt tölt be a memóriába, létrehoz egy Class objektumot, amellyel konkrét információkat kaphat a betöltött osztályról."
"Minden osztály és objektum egy « Osztály objektumhoz » van társítva .
Példa | Leírás |
---|---|
|
Lekéri az Integer osztály Class objektumát. |
|
Lekéri az int osztály Class objektumát. |
|
Lekéri egy String objektum Class objektumát. |
|
Lekéri az Object objektum Class objektumát. |
"Hűha! Milyen érdekes!"
"Emlékszel, hogy a class szó kulcsszó a Java nyelvben, és nem használható változónévként?"
"Ó igen, tudom, tudom. Csak elfelejtettem."
– Használtad már valahol a Class objektumot?
"Igen, ezt használtuk, amikor megírtuk az egyenlőség módszer saját megvalósítását."
"Igen, a getClass() metódussal ellenőrizheti, hogy az objektumok azonos osztályúak-e."
– És mit lehet kezdeni ezzel a tárggyal?
– Nos, sok minden:
Java kód | Leírás |
---|---|
|
Lekéri az osztály nevét. |
|
Név szerint kap egy osztályt. |
|
Összehasonlítja az objektumok osztályait. |
– Érdekes, de nem olyan menő, mint gondoltam.
"Azt akarod, hogy menő legyen? Van Reflection is . A tükrözés szuper jó."
– Mi az a Reflexió ?
" A reflexió egy osztály azon képessége, hogy információkat szerezzen önmagáról. A Java speciális osztályokkal rendelkezik: Field és Method , amelyek hasonlóak az osztályok Class osztályához . Ahogyan az osztályobjektumok lehetővé teszik az osztályok információinak megszerzését, a mezőobjektumok egy mezőről nyújtanak információt. , és a Method objektum információkat nyújt egy metódusról. És nézze meg, mit tehet velük:"
Java kód | Leírás |
---|---|
|
Lekéri az Osztály objektumok listáját a Lista osztály interfészeihez |
|
Lekéri a String osztály szülőosztályának Class objektumát |
|
Lekéri a List osztály metódusainak listáját |
|
Létrehoz egy új karakterláncot |
|
Lekéri a String osztály hosszmetódusát, és meghívja a String s-en |
"Hűha! Ez most nagyon klassz!"
GO TO FULL VERSION