国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Java 反射字段訪問

2018-02-12 20:37 更新

Java反射 - Java反射字段訪問


我們可以使用反射在兩個(gè)步驟中獲取或設(shè)置字段。

  • 獲取字段的引用。
  • 要讀取字段的值,請(qǐng)?jiān)谧侄紊险{(diào)用getXxx()方法,其中Xxx是字段的數(shù)據(jù)類型。
  • 要設(shè)置字段的值,請(qǐng)調(diào)用相應(yīng)的setXxx()方法。

以相同的方式訪問靜態(tài)和實(shí)例字段。


例子

import java.lang.reflect.Field;

class MyClass {
  public String name = "Unknown";
  public MyClass() {
  }
  public String toString() {
    return "name=" + this.name;
  }
}
public class Main {
  public static void main(String[] args) {
    Class<MyClass> ppClass = MyClass.class;
    try {
      MyClass p = ppClass.newInstance();
      Field name = ppClass.getField("name");
      String nameValue = (String) name.get(p);
      System.out.println("Current name is " + nameValue);
      name.set(p, "abc");
      nameValue = (String) name.get(p);
      System.out.println("New  name is " + nameValue);
    } catch (InstantiationException | IllegalAccessException
        | NoSuchFieldException | SecurityException | IllegalArgumentException e) {
      System.out.println(e.getMessage());
    }
  }
}

上面的代碼生成以下結(jié)果。


繞過輔助功能檢查

使用反射訪問類的非可訪問字段,方法和構(gòu)造函數(shù)從 AccessibleObject 類調(diào)用 setAccessible(boolean flag)方法。

我們需要使用true參數(shù)調(diào)用此方法,以使該字段,方法和構(gòu)造函數(shù)可訪問。

import java.lang.reflect.Field;

class MyClass {
  private String name = "Unknown";

  public MyClass() {
  }

  public String toString() {
    return "name=" + this.name;
  }
}

public class Main {
  public static void main(String[] args) {
    Class<MyClass> my = MyClass.class;
    try {
      MyClass p = my.newInstance();
      Field nameField = my.getDeclaredField("name");
      nameField.setAccessible(true);
      String nameValue = (String) nameField.get(p);
      System.out.println("Current name is " + nameValue);
      nameField.set(p, "abc");
      nameValue = (String) nameField.get(p);
      System.out.println("New name is " + nameValue);
    } catch (InstantiationException | IllegalAccessException
        | NoSuchFieldException | SecurityException | IllegalArgumentException e) {
      System.out.println(e.getMessage());
    }
  }
}

上面的代碼生成以下結(jié)果。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)