Laster klasser

All lectures for NO purposes
Nivå, Lekse
Tilgjengelig

Vi har allerede snakket om det faktum at klasser er komplekse datatyper. La oss nå snakke litt om den andre siden av klasser - hvordan klasser håndteres av Java-maskinen. Husk at i Java er alt et objekt, til og med en klasse. En klasse er et objekt. Overrasker det deg? Så la oss fortsette.

Laster en klasse inn i minnet

Faktisk, når en klasse lastes inn i minnet, opprettes tre spesielle "objekter":

Laster en klasse inn i minnet

Kort beskrivelse av illustrasjonen:

Gult rektangel:

Kodefilen lagres på disken som en fil med filtypen ".class". Den inneholder informasjon om klassen, dens felt og metoder, samt kildekoden til metoder som er kompilert til bytekode.

Oransje rektangel:

Når Java-maskinen laster en klasse inn i minnet, kompilerer den bytekoden til maskinkode spesifikk for datamaskinens prosessor og operativsystem. Bare Java-maskinen har tilgang til denne maskinkoden. Som Java-programmerere har vi ikke tilgang til det.

Grønt rektangel:

Java-maskinen lager et objekt som inneholder alle de statiske variablene og metodene i klassen. Du får tilgang til dette "objektet" ved å bruke klassenavnet.

For eksempel, når du skriver refererer du til den statiske variabelen som ligger i klassen. Dette objektet er vårt grønne rektangel. Og det er der den statiske variabelen er lagret.java.lang.Math.PIPIjava.lang.Mathjava.lang.MathPI

Blått rektangel:

Når Java-maskinen laster koden til en klasse inn i minnet, lager den et spesielt java.lang.Classobjekt, som lagrer informasjon om den lastede klassen: dens navn, metodenavn, feltnavn og typer, etc.

Navnet "Klasse" kan være litt forvirrende. Det ville være mer fornuftig å kalle det ClassInfo, siden denne klassen bare lagrer litt informasjon om den innlastede klassen.

Du kan få klasseobjektet for enhver type ved å bruke en kommando som denne:

Class name = ClassName.class;

Eksempler:

Kode Merk
Class a = String.class;
Få et Classobjekt med informasjon om Stringklassen
Class b = Object.class;
Få et Classobjekt med informasjon om Objectklassen
Class c = Integer.class;
Få et Classobjekt med informasjon om Integerklassen
Class d = int.class;
Få et Classobjekt med informasjon om inttypen
Class e = void.class;
Få et Classobjekt med informasjon om voidtypen

Du kan også få en referanse til et klassebeskrivelsesobjekt fra ethvert objekt, siden hvert objekt har metoden getClass()som det arver fra Objectklassen.

Eksempler:

Kode Merk
Class a = "Hello".getClass();
Samme objekt somString.class
Class b = new Integer().getClass();
Samme objekt somInteger.class
Class c = Boolean.TRUE.getClass();
Samme objekt somBoolean.class
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION