
"Hei, Amigo!"
"Nå er det tid for hovedarrangementet. Vi blir kjent med klasseklassen og berører Refleksjon.
Som du sikkert allerede har skjønt, er alt i Java et objekt. Og hva trenger et objekt? Hva har hvert objekt som definerer hva handler det om?"
"En klasse!"
"Riktig! Godt gjort. Hvert objekt har en klasse. Men å komme tilbake til objekter... Noen objekter inneholder fullstendig en enhet, mens andre bare hjelper til med å administrere den."
"Denne sistnevnte typen inkluderer FileOutputStream og Thread . Når du oppretter et Thread- objekt, blir det ikke opprettet en ny tråd. Tråden opprettes av den virtuelle Java-maskinen etter at start()-metoden kalles. Dette objektet hjelper ganske enkelt med å administrere prosessen."
"Samme med FileOutputStream : filen er lagret på disk, og operativsystemet administrerer lagring og tilgang. Men vi kan samhandle med den gjennom filobjekter, nok en gang ved hjelp av den virtuelle Java-maskinen."
— Ja, det forstår jeg allerede.
"Så, det er en spesiell klasse som heter Class for interaksjon med klasser."
"Det var ikke vanskelig å gjette."
"Jepp. Hver gang den virtuelle Java-maskinen laster en ny klasse inn i minnet, lager den et klasseobjekt, som du kan bruke til å få spesifikk informasjon om den innlastede klassen."
"Hver klasse og objekt er assosiert med et " Klasseobjekt ".
Eksempel | Beskrivelse |
---|---|
|
Henter Integer-klassens Class-objekt. |
|
Henter int-klassens Class-objekt. |
|
Henter et strengobjekts klasseobjekt. |
|
Henter objektobjektets klasseobjekt. |
"Wow! Så interessant!"
"Husker du at ordklassen er et nøkkelord i Java og ikke kan brukes som et variabelnavn?"
"Å ja, jeg vet, jeg vet. Jeg har bare glemt det."
"Har du allerede brukt Class-objektet et sted?"
"Ja, vi brukte det da vi skrev vår egen implementering av likhetsmetoden."
"Ja, du kan bruke getClass()-metoden for å teste om objekter har samme klasse."
"Og hva kan du gjøre med denne gjenstanden?"
"Vel, mange ting:"
Java-kode | Beskrivelse |
---|---|
|
Får klassenavnet. |
|
Får en klasse ved navn. |
|
Sammenligner objekters klasser. |
"Interessant, men ikke så kult som jeg trodde."
"Vil du at det skal være kult? Det er også Reflection . Reflection er superkult."
"Hva er refleksjon ?"
" Refleksjon er en klasses evne til å skaffe informasjon om seg selv. Java har spesielle klasser: Field and Method , som ligner på klasseklassen for klasser. Akkurat som klasseobjekter lar deg få informasjon om en klasse, gir feltobjekter informasjon om et felt , og Method-objektet gir informasjon om en metode. Og se på hva du kan gjøre med dem:"
Java-kode | Beskrivelse |
---|---|
|
Henter en liste over klasseobjekter for Listeklassens grensesnitt |
|
Henter Class-objektet til String-klassens overordnede klasse |
|
Får en liste over List-klassens metoder |
|
Oppretter en ny streng |
|
Henter String-klassens lengdemetode og kaller den på String s |
"Wow! Nå er det veldig kult!"
GO TO FULL VERSION