Classe de référence faible en Java

Sheeraz Gul 12 octobre 2023
Classe de référence faible en Java

Une référence faible est une référence qui n’est pas assez forte pour qu’un objet reste en mémoire. Ce didacticiel illustre l’utilisation de références faibles en Java.

Classe de référence faible en Java

En Java, la classe java.lang.ref.WeakReference exploite les ramasse-miettes pour déterminer l’accessibilité, nous n’avons donc pas besoin de le faire nous-mêmes. La classe de référence faible en Java a les méthodes suivantes.

Méthode La description
get() Cette méthode renvoie le référent de l’objet de référence.
clear() Cette méthode est utilisée pour effacer l’objet de référence.
enqueue() Cette méthode est utilisée pour ajouter l’objet de référence à la file d’attente ; l’objet doit être enregistré dans la file d’attente.
isEnqueued() Cette méthode indique si l’objet de référence a été mis en file d’attente ; cela peut être par le ramasse-miettes ou le programme lui-même.

Essayons d’abord un exemple simple pour implémenter la classe de référence faible Java.

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<<");
  }
}

Le code ci-dessus crée un objet fort de Demo_Class et un objet faible de la même classe et appelle la fonction Show_Info. Voir la sortie :

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<<

Essayons maintenant un exemple avec les méthodes ci-dessus.

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.");
  }
}

Le code ci-dessus utilise toutes les méthodes décrites ci-dessus sur l’objet faible de Demo_Class. Voir la sortie :

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
Auteur: Sheeraz Gul
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