"Hej, Amigo!"
"Nu er det tid til hovedbegivenheden. Vi stifter bekendtskab med klasseklassen og berører Reflection.
Som du sikkert allerede har indset, er alt i Java et objekt. Og hvad har et objekt brug for? Hvad har hvert objekt, der definerer hvad handler det om?"
"En klasse!"
"Godt! Godt klaret. Hvert objekt har en klasse. Men at komme tilbage til objekter... Nogle objekter indeholder fuldstændigt en entitet, mens andre simpelthen hjælper med at administrere den."
"Denne sidstnævnte type inkluderer FileOutputStream og Thread . Når du opretter et Thread- objekt, oprettes der ikke en ny tråd. Tråden oprettes af den virtuelle Java-maskine efter start()-metoden kaldes. Dette objekt hjælper simpelthen med at styre processen."
"Samme med FileOutputStream : filen er gemt på disken, og operativsystemet administrerer lagring og adgang. Men vi kan interagere med den gennem File-objekter, igen ved hjælp af den virtuelle Java-maskine."
"Ja, det forstår jeg allerede."
"Så der er en speciel klasse kaldet Klasse til at interagere med klasser."
"Det var ikke svært at gætte."
"Jep. Hver gang den virtuelle Java-maskine indlæser en ny klasse i hukommelsen, opretter den et klasseobjekt, som du kan bruge til at få specifik information om den indlæste klasse."
"Hver klasse og objekt er knyttet til et " Klasseobjekt ".
Eksempel | Beskrivelse |
---|---|
|
Henter Integer-klassens Class-objekt. |
|
Henter int-klassens Class-objekt. |
|
Henter et strengobjekts klasseobjekt. |
|
Henter objektobjektets klasseobjekt. |
"Wow! Hvor interessant!"
"Kan du huske, at ordklassen er et nøgleord i Java og ikke kan bruges som et variabelnavn?"
"Åh ja, jeg ved det, jeg ved det. Jeg har bare glemt det."
"Har du allerede brugt Class-objektet et sted?"
"Ja, vi brugte det, da vi skrev vores egen implementering af equals-metoden."
"Ja, du kan bruge metoden getClass() til at teste, om objekter har samme klasse."
"Og hvad kan du gøre med denne genstand?"
"Nå, mange ting:"
Java kode | Beskrivelse |
---|---|
|
Får klassenavnet. |
|
Får en klasse ved navn. |
|
Sammenligner objekters klasser. |
"Interessant, men ikke så fedt, som jeg troede."
"Du vil have, at det skal være fedt? Der er også Reflection . Reflection er super cool."
"Hvad er Reflektion ?"
" Reflektion er en klasses evne til at indhente information om sig selv. Java har specielle klasser: Field og Method , som ligner klasseklassen for klasser. Ligesom klasseobjekter lader dig få information om en klasse, giver Field-objekter information om et felt , og Method-objektet giver information om en metode. Og se på, hvad du kan gøre med dem:"
Java kode | Beskrivelse |
---|---|
|
Henter en liste over klasseobjekter til Listeklassens grænseflader |
|
Henter klasseobjektet for String-klassens overordnede klasse |
|
Får en liste over List-klassens metoder |
|
Opretter en ny streng |
|
Henter String-klassens længdemetode og kalder den på String s |
"Wow! Nu er det virkelig fedt!"
GO TO FULL VERSION