日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通过反射--操作运行时类中的指定的属性/方法

發布時間:2025/3/17 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过反射--操作运行时类中的指定的属性/方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 操作運行時類中的指定的屬性:

1.getDeclaredField(String fieldName):獲取運行類中指定變量名的屬性;
2.保證當前屬性時可訪問的 : 屬性.setAccessible(true);
3.獲取、設置指定對象的此屬性值 : 屬性.set(); / 屬性.get();

@Testpublic void testField1() throws Exception {Class clazz = Person.class;//創建運行時類的對象Person p = (Person)clazz.newInstance();//1. getDeclaredField(String fieldName):獲取運行類中指定變量名的屬性Field name = clazz.getDeclaredField("name");//2. 保證當前屬性時可訪問的name.setAccessible(true);//3. 獲取、設置指定對象的此屬性值name.set(p,"Mali");System.out.println(name.get(p));}
  • 操作運行時類中的指定的方法:
    1.getDeclaredMethod():參數1:指明獲取的方法名稱 參數2:指明獲取方法的形參列表;
    2.保證當前方法可訪問 : 方法名.setAccessible(true);
    3.調用 invoke(): 參數1:方法的調用者 參數2:給方法形參賦值的實參;
    invoke()的返回值即為對應類中調用的方法的返回值;
@Testpublic void testMethod() throws Exception {Class clazz = Person.class;//創建運行時類的對象Person p = (Person)clazz.newInstance();/*1.獲取指定的某個方法getDeclaredMethod():參數1:指明獲取的方法名稱 參數2:指明獲取方法的形參列表*/Method show = clazz.getDeclaredMethod("show", String.class);//2.保證當前方法可訪問show.setAccessible(true);/*3. 調用 invoke(): 參數1:方法的調用者 參數2:給方法形參賦值的實參invoke()的返回值即為對應類中調用的方法的返回值*/Object returnValue = show.invoke(p,"CHN"); //show()是有返回值的//String nation = p.show("CHN");System.out.println(returnValue);System.out.println("如何調用靜態方法");//private static void showDesc(){Method showDesc = clazz.getDeclaredMethod("showDesc");showDesc.setAccessible(true);//如果調用的運行時類中的方法沒有返回值,則invoke()返回nullObject returnVal = showDesc.invoke(Person.class);System.out.println(returnVal); //返回值類型void,返回值就是null}

總結

以上是生活随笔為你收集整理的通过反射--操作运行时类中的指定的属性/方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。