Schwache Referenzklasse in Java
Eine schwache Referenz ist eine Referenz, die nicht stark genug ist, damit ein Objekt im Speicher bleibt. Dieses Tutorial demonstriert die Verwendung von schwachen Referenzen in Java.
Schwache Referenzklasse in Java
In Java nutzt die Klasse java.lang.ref.WeakReference
die Garbage Collectors, um die Erreichbarkeit zu bestimmen, sodass wir dies nicht selbst tun müssen. Die schwache Referenzklasse in Java hat die folgenden Methoden.
Methode | Beschreibung |
---|---|
get() |
Diese Methode gibt den Referenten des Referenzobjekts zurück. |
clear() |
Diese Methode wird verwendet, um das Referenzobjekt zu löschen. |
enqueue() |
Diese Methode wird verwendet, um das Referenzobjekt der Warteschlange hinzuzufügen; Das Objekt muss in der Warteschlange registriert werden. |
isEnqueued() |
Diese Methode gibt an, ob das Referenzobjekt in die Warteschlange eingereiht wurde; Dies kann der Garbage Collector oder das Programm selbst sein. |
Lassen Sie uns zunächst ein einfaches Beispiel zum Implementieren der schwachen Java-Referenzklasse ausprobieren.
package delftstack;
import java.lang.ref.WeakReference;
public class Weak_Reference {
public static void main(String[] args) {
// creating a strong object
Demo_Class Strong_Object = new Demo_Class();
// creating a weak reference of demo_class
WeakReference<Demo_Class> Weak_Object = new WeakReference<>(Strong_Object);
System.out.println("Call the show info function using the strong object");
Strong_Object.Show_Info();
System.out.println("Setting the object to null");
Strong_Object = null;
Strong_Object = Weak_Object.get();
System.out.println("Call the show info function using the weak object");
Strong_Object.Show_Info();
}
}
class Demo_Class {
void Show_Info() {
System.out.println(">>This is the info from demo class<<");
}
}
Der obige Code erstellt ein starkes Objekt von Demo_Class
und ein schwaches Objekt derselben Klasse und ruft die Funktion Show_Info
auf. Siehe Ausgabe:
Call the show info function using the strong object
>>This is the info from demo class<<
Setting the object to null
Call the show info function using the weak object
>>This is the info from demo class<<
Versuchen wir nun ein Beispiel mit den oben genannten Methoden.
package delftstack;
import java.lang.ref.WeakReference;
public class Weak_Reference {
public static void main(String[] args) {
Demo_Class Strong_Object = new Demo_Class();
WeakReference<Demo_Class> Weak_Object = new WeakReference<Demo_Class>(Strong_Object);
System.out.println("Retrieve object from weak reference using get()");
Weak_Object.get().Show_Info();
System.out.println("queue object using enqueue()");
System.out.println(Weak_Object.enqueue());
System.out.println("Check if reference is queued using isEnqueued()");
System.out.println(Weak_Object.isEnqueued());
}
}
class Demo_Class {
void Show_Info() {
System.out.println("Show_Info() from Demo_Class is called.");
}
}
Der obige Code verwendet alle oben beschriebenen Methoden für das schwache Objekt von Demo_Class
. Siehe Ausgabe:
Retrieve object from weak reference using get()
Show_Info() from Demo_Class is called.
queue object using enqueue()
false
Check if reference is queued using isEnqueued()
false
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook