English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Java

Contrôle de flux Java

Java tableau

Java orienté objet (I)

Java orienté objet (II)

Java orienté objet (III)

Gestion des exceptions Java

Java Liste (List)

Java Queue (file d'attente)

Java Map collection

Java Set collection

Java Entrée/Sortie (I/O)

Java Reader/Writer

Autres sujets Java

Accès aux membres privés des classes par un programme Java

Comprehensive Java examples

Dans cet exemple, nous allons apprendre à accéder aux méthodes et attributs privés des classes en Java.

Pour comprendre cet exemple, vous devriez comprendre ce qui suitProgrammation JavaSujet :

Exemple1:使用getter和setter方法访问私有属性

class Test {
  //Variable privée
  private int age;
  private String name;
  // Initialisation de age
  public void setAge(int age) {
    this.age = age;
  }
  // Initialisation de name
  public void setName(String name) {}}
    this.name = name;
  }
  // Accéder à age
  public int getAge() {
    return this.age;
  }
  // Accéder à name
  public String getName() {
    return this.name;
  }
}
class Main {
  public static void main(String[] args) {
    //Créer un objet Test
    Test test = new Test();
    // Définir la valeur de la variable privée
    test.setAge(24);
    test.setName("w3codebox");
    //Obtenir la valeur de la variable privée
    System.out.println("Âge : " + test.getAge());
    System.out.println("Nom: " + test.getName());
  }
}

Output result

Âge : 24
Name:  w3codebox

Dans cet exemple, nous avons des variables privées nommées age et name. Ici, nous essayons d'accéder aux variables privées depuis une autre classe nommée Main.

Nous avons utilisé les méthodes getter et setter pour accéder aux variables privées. Ici,

  • Méthodes setter - setAge() et setName() initialisent les variables privées

  • Méthodes getter - getAge() et getName() renvoient les valeurs des variables privées

Exemple2:Accéder aux champs et méthodes privés à l'aide de la réflexion

import java.lang.reflect.*;
class Test {
  //Variable privée
  private String name;
  //Méthode privée
  private void display() {
    System.out.println("Le nom est " + name);
  }
}
class Main {
  public static void main(String[] args) {
    try
      //Créer un objet Test
      Test test = new Test();
      //Créer un objet nommé obj
      Class obj = test.getClass();
      //Accéder aux variables privées
      Field field = obj.getDeclaredField("name");
      // Rendre le champ privé accessible
      field.setAccessible(true);
      //Définir la valeur du champ
      field.set(test, "w3codebox");
      //Obtenir la valeur du champ
      //et le convertir en chaîne de caractères
      String value = (String)field.get(test);
      System.out.println("Nom: " + value);
      //Accéder aux méthodes privées
      Method[]  methods  =  obj.getDeclaredMethods();
      System.out.println("Method name:  " + methods[0].getName());
      int  modifier  =  methods[0].getModifiers();
      System.out.println("Access modifier:  " + Modifier.toString(modifier));
    }
    catch(Exception  e)  {
      e.printStackTrace();
    }
  }
}

Output result

Name:  w3codebox
Method name:  display    
Access modifier:  private

In this example, we have a private field named name and a private method named display(). Here, we use reflection to access the private fields and methods of the Test class.

To understand reflection, please visitJava Reflection (Reflection).

Comprehensive Java examples