Schwache Referenzklasse in Java

Sheeraz Gul 12 Oktober 2023
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 Gul avatar Sheeraz Gul avatar

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