最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 利用反射獲取內(nèi)部類靜態(tài)成員變量的值操作

 更新時(shí)間:2020年12月03日 15:51:30   作者:常樂_smile  
這篇文章主要介紹了java 利用反射獲取內(nèi)部類靜態(tài)成員變量的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

昨晚,一同事問到我,怎么利用java反射解析內(nèi)部類靜態(tài)成員變量的值,于是順手寫下了。

廢話不多說,直接上代碼!

待解析類結(jié)構(gòu)如下:

/**
 * @Author changle
 * @Time 17/6/13.
 * @Desc to do
 */
public class Goods {
 static class apple{
  public static String version = "iphone6s[是手機(jī)不是吃的蘋果]";
  public static String date = "生產(chǎn)日期 2017-06-13";
 }
}

獲取內(nèi)部類靜態(tài)成員變量工具類:

/**
 * @Author changle
 * @Time 17/6/13.
 * @Desc 獲取靜態(tài)內(nèi)部類靜態(tài)變量
 */
public class TestParseInnerProValue {
 public static void main(String[] args) {
  Class<?> clasz = Goods.class;
  printInnerParamValue(clasz);
 }
 
 public static void printInnerParamValue(Class<?> clasz){
  Class innerClazz[] = clasz.getDeclaredClasses();
  for(Class claszInner : innerClazz){
   Field[] fields = claszInner.getDeclaredFields();
   for(Field field : fields){
    try {
     Object object = field.get(claszInner);
     System.out.println("獲取到的feild, name=" + field.getName()+", value="+ object.toString());
     //打印內(nèi)容
     /*
     * 獲取到的feild, name=version, value=iphone6s[是手機(jī)不是吃的蘋果]
      獲取到的feild, name=date, value=生產(chǎn)日期 2017-06-13
     * */
    } catch (IllegalAccessException e) {
     e.printStackTrace();
    }
 
   }
  }
 }
}

補(bǔ)充知識(shí):Java 利用反射機(jī)制獲取內(nèi)部類的私有屬性和方法,并且修改私有屬性的值

廢話不多說直接貼代碼,代碼中有注釋,如下:

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Test {
  @SuppressWarnings("unused")
  class Test1{
    //私有屬性
    private String color = "blue";
    
    //無參數(shù)的私有方法使用私有屬性
    private void queryColor(){
      System.out.println(color);
    }
    
    //一個(gè)參數(shù)的私有方法
    private void privateTest1(String param1) {
      System.out.println(">>>>>>" + param1 + ">>>>>>>>>" + color +">>>>>>>>>>");
    }
    
    //兩個(gè)參數(shù)的私有方法
    private void privateTest2(String param1,String param2) {
      System.out.println(">>>>>>" + param1 + ">>>>>>>>>"+ param2 + ">>>>>>>>");
    }    
  }
  
  /** 
   * @Title: main 
   * @Description: 利用反射機(jī)制獲取內(nèi)部類的私有屬性和方法,并且修改私有屬性的值
   * @param args
   * @author songye 
   * @date Jul 19, 2018 10:17:32 AM
   * @return: void
   */
  public static void main(String[] args) {
    try {
      Test test = new Test(); 
      Test1 test1 = test.new Test1();
      //獲取內(nèi)部類的私有屬性
      Field colorField = Test1.class.getDeclaredField("color");
      //設(shè)置為true表示可以訪問private修飾的私有屬性
      colorField.setAccessible(true);
      System.out.println(colorField);
      //color的值改為red
      colorField.set(test1, "red");
      
      //獲取內(nèi)部類的私有方法,無參數(shù)的
      Method method = Test1.class.getDeclaredMethod("queryColor");
      //設(shè)置為true表示可以訪問private修飾的私有方法
      method.setAccessible(true);
      System.out.println(method);
      //用來執(zhí)行指定對(duì)象的方法,無參數(shù)的
      method.invoke(test1);
      
      //獲取內(nèi)部類的私有方法,一個(gè)參數(shù)的
      Method method1 = Test1.class.getDeclaredMethod("privateTest1",String.class);
      //設(shè)置為true表示可以訪問private修飾的私有方法
      method1.setAccessible(true);
      System.out.println(method1);
      //用來執(zhí)行指定對(duì)象的方法,前面test1是對(duì)象,后面的是一個(gè)參數(shù)
      method1.invoke(test1,"我調(diào)用了你的私有方法?。?!");
      
      //獲取內(nèi)部類的私有方法,兩個(gè)參數(shù)的
      Method method2 = Test1.class.getDeclaredMethod("privateTest2",String.class,String.class);
      //設(shè)置為true表示可以訪問private修飾的私有方法
      method2.setAccessible(true);
      System.out.println(method2);
      //用來執(zhí)行指定對(duì)象的方法,前面test1是對(duì)象,后面的是兩個(gè)參數(shù)
      method2.invoke(test1, "用我的參數(shù)1","用我的參數(shù)2");
    } catch (NoSuchFieldException e) {
      e.printStackTrace();
    } catch (SecurityException e) {
      e.printStackTrace();
    } catch (IllegalArgumentException e) {
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    } catch (NoSuchMethodException e) {
      e.printStackTrace();
    } catch (InvocationTargetException e) {
      e.printStackTrace();
    }
  }
}

運(yùn)行后打印,如下:

以上這篇java 利用反射獲取內(nèi)部類靜態(tài)成員變量的值操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解讀JVM的生命周期是怎么樣的

    解讀JVM的生命周期是怎么樣的

    JVM的生命周期包括啟動(dòng)、運(yùn)行和終止三個(gè)階段,啟動(dòng)階段包括創(chuàng)建JVM實(shí)例、加載和初始化核心類庫、加載main方法所在的類和初始化類,運(yùn)行階段包括執(zhí)行main方法、類加載、字節(jié)碼執(zhí)行、內(nèi)存管理、線程管理和異常處理,終止階段包括正常終止、異常終止和外部終止
    2025-03-03
  • JavaWeb ServletContext基礎(chǔ)與應(yīng)用詳細(xì)講解

    JavaWeb ServletContext基礎(chǔ)與應(yīng)用詳細(xì)講解

    ServletConfig對(duì)象,叫Servlet配置對(duì)象。主要用于加載配置文件的初始化參數(shù)。我們知道一個(gè)Web應(yīng)用里面可以有多個(gè)servlet,如果現(xiàn)在有一份數(shù)據(jù)需要傳給所有的servlet使用,那么我們就可以使用ServletContext對(duì)象了
    2023-01-01
  • JDK集合源碼之解析TreeMap(二)

    JDK集合源碼之解析TreeMap(二)

    下面小編就為大家?guī)硪黄獪\談java中的TreeMap 排序與TreeSet 排序。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-07-07
  • Tomcat+Eclipse亂碼問題解決方法與步驟

    Tomcat+Eclipse亂碼問題解決方法與步驟

    亂碼問題是大家在日常開發(fā)過程中經(jīng)常會(huì)遇到的問題,由于各自環(huán)境的不同,解決起來也費(fèi)時(shí)費(fèi)力,本文主要介紹一般性亂碼問題的解決方法與步驟,開發(fā)工具采用Eclipse+Tomcat,統(tǒng)一設(shè)置項(xiàng)目編碼UTF-8為例,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • Java實(shí)現(xiàn)浪漫流星表白的示例代碼

    Java實(shí)現(xiàn)浪漫流星表白的示例代碼

    本文將利用Java語言實(shí)現(xiàn)浪漫流星表白,可以實(shí)現(xiàn)這些功能:播放音樂、自定義流星數(shù)量、飛行速度、光暈大小、流星大小,自定義表白話語,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • java選擇框、單選框和單選按鈕

    java選擇框、單選框和單選按鈕

    本文給大家介紹的是java中選擇框、單選框和單選按鈕的操作方法,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • java?獲取子串速率比較分析

    java?獲取子串速率比較分析

    這篇文章主要為大家介紹了java?獲取子串速率比較分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • java遍歷讀取xml文件內(nèi)容

    java遍歷讀取xml文件內(nèi)容

    這篇文章主要為大家介紹了java遍歷讀取xml文件內(nèi)容,感興趣的小伙伴們可以參考一下
    2016-01-01
  • SpringBoot模擬員工數(shù)據(jù)庫并實(shí)現(xiàn)增刪改查操作

    SpringBoot模擬員工數(shù)據(jù)庫并實(shí)現(xiàn)增刪改查操作

    這篇文章主要給大家介紹了關(guān)于SpringBoot模擬員工數(shù)據(jù)庫并實(shí)現(xiàn)增刪改查操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Apache POI將PPT轉(zhuǎn)換成圖片實(shí)例代碼

    Apache POI將PPT轉(zhuǎn)換成圖片實(shí)例代碼

    這篇文章主要介紹了Apache POI將PPT轉(zhuǎn)換成圖片實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01

最新評(píng)論

潜江市| 平顺县| 辉南县| 中江县| 华亭县| 东辽县| 阜宁县| 诸暨市| 崇仁县| 大庆市| 盱眙县| 顺平县| 迭部县| 抚松县| 兴仁县| 拉孜县| 麻阳| 米易县| 自贡市| 内乡县| 芦溪县| 烟台市| 浮梁县| 莎车县| 禹州市| 深泽县| 河池市| 文登市| 库尔勒市| 永年县| 岳池县| 调兵山市| 台南县| 湖南省| 甘谷县| 夏邑县| 灵丘县| 通城县| 疏勒县| 集安市| 鄄城县|