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

Introduzione di base a Java

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Gestione delle eccezioni in Java

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java 程序访问类的私有成员

Completa guida di esempio Java

在此示例中,我们将学习访问Java中类的私有方法和属性。

要理解此示例,您应该了解以下Java编程主题:

示例1:使用getter和setter方法访问私有属性

class Test {
  //Variabile privata
  private int age;
  private String name;
  // 初始化 age
  public void setAge(int age) {
    this.age = age;
  }
  // 初始化 name
  public void setName(String name) {
    this.name = name;
  }
  // 访问 age
  public int getAge() {
    return this.age;
  }
  //Accedi a name
  public String getName() {
    return this.name;
  }
}
class Main {
  public static void main(String[] args) {
    //Crea un oggetto Test
    Test test = new Test();
    //Imposta il valore della variabile privata
    test.setAge(24);
    test.setName("w3codebox");
    //Ottieni il valore della variabile privata
    System.out.println("Età: " + test.getAge());
    System.out.println("Nome: " + test.getName());
  }
}

Risultato di output

Età: 24
Nome: w3codebox

Nell'esempio sopra, abbiamo variabili private chiamate age e name. Qui, cerchiamo di accedere alle variabili private da un'altra classe chiamata Main.

Abbiamo già utilizzato i metodi getter e setter per accedere alle variabili private. Ecco,

  • Metodo setter - setAge() e setName() inizializzano le variabili private

  • Metodo getter - getAge() e getName() restituiscono i valori delle variabili private

Esempio 2: Utilizzo della reflection per accedere ai campi e ai metodi privati

import java.lang.reflect.*;
class Test {
  //Variabile privata
  private String name;
  //Metodo privato
  private void display() {
    System.out.println("Il nome è " + name);
  }
}
class Main {
  public static void main(String[] args) {
    try {
      //Crea un oggetto Test
      Test test = new Test();
      //Crea un oggetto chiamato obj
      Class obj = test.getClass();
      //Accedi al variabile privato
      Field field = obj.getDeclaredField("name");
      //Rendi accessibile il campo privato
      field.setAccessible(true);
      //Imposta il valore del campo
      field.set(test, "w3codebox");
      //Ottieni il valore del campo
      //Convertilo in stringa
      String value = (String)field.get(test);
      System.out.println("Nome: " + value);
      //Accedi al metodo privato
      Method[] methods = obj.getDeclaredMethods();
      System.out.println("Nome del metodo: " + methods[0].getName());
      int modifier = methods[0].getModifiers();
      System.out.println("Modificatore di accesso: " + Modifier.toString(modifier));
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
}

Risultato di output

Nome: w3codebox
Nome del metodo: display    
Modificatore di accesso: private

In questo esempio, abbiamo un campo privato di nome name e un metodo privato di nome display(). Qui, utilizziamo la riflessione per accedere ai campi e ai metodi privati della classe Test.

Per comprendere la riflessione, visitareReflection Java (reflessione)

Completa guida di esempio Java