Hvordan tæller man antallet af forekomster af en klasse i java?
Dette er korte selvstudier om, hvordan man tæller antallet af forekomster/objekter af en klasse i java.
Et objekt i en klasse kan oprettes ved hjælp af et nyt nøgleord i java. et objekt er en forekomst af en klasse.
En klasse kan have flere objekter.
Hvordan tæller man antallet af objekter/forekomster af en klasse i java?
static
er det globale omfang, der kan oprettes og tilgås af alle objekter i en klasse. Så static
medlemsvariabel bruges til at kende antallet.
Her er en trin-for-trin guide til at tælle.
- I en klasse oprettede en
static
variabel(objectCount), og alle objekter har adgang til det. Disse kaldes `klasseomfangsvariabler - objectCount initialiseres initialt med nul
Static
variabler er kun tilgået afstatic
medlemmer direkteInstance
blok defineret og øget dens værdi med én, hver gang et nyt objekt oprettes.- objectCount reduceret i
finalize
metode, som kalder, når et objekt er klar til affaldsindsamling. Det er nyttigt at tælle ikke-affaldssamlede genstande. - Til sidst udskrev
static
medlemsvariabel ved hjælp af en klasse.
Her er et eksempel, der bruger instansblok
public class Main
{
private static int objectCount = 0;
{
objectCount += 1;
}
public static void main(String[] args) {
Main t1 = new Main();
Main t2 = new Main();
System.out.println("Object Count "+getObjectCount());
}
public static int getObjectCount(){
return objectCount;
}
protected void finalize() throws Throwable{
super.finalize();
objectCount--;
}
}
Konstruktøren har en kode til at øge objektantallet
Destruction
ved hjælp af finalize
har en kode til at mindske objektantallet
Det samme eksempel kan omskrives med increment objectCount i konstruktørblok
I denne inkrementeres statiske medlemsvariabler i konstruktøren, Constructor kaldes hver gang et nyt objekt oprettes.
public class Main
{
private static int objectCount = 0;
public MyClass() {
objectCount++;
}
public static void main(String[] args) {
Main t1 = new Main();
Main t2 = new Main();
System.out.println("Object Count "+getObjectCount());
}
public static int getObjectCount(){
return objectCount;
}
protected void finalize() throws Throwable{
super.finalize();
objectCount--;
}
}
Ovenstående programmer returnerer følgende output
Object Count 2
Konklusion
Fra oven er statiske medlemsvariabler klasseomfang, instansen kan tælles i enten instansblok- eller konstruktørtilgang.
Håber du kan lide dette indlæg.