導航:首頁 > 編程語言 > java反射修改屬性

java反射修改屬性

發布時間:2023-07-17 02:07:48

⑴ 利用java反射改一下任意對象的屬性值的編碼。比如說Student對象的name值原來是GBK的,然後改成utf-8的

只要不是final的,都可以改
問題是,編碼不能改。
java內部都是unicode編碼。
輸出默認都是utf8
你要是想改編碼,就在輸出的時候重新編碼一下就可以了。不用反射。

⑵ java 反射 能直接對私有屬性賦值么不通過set方法

設置
A a = new A();
Field field = a.getClass().getDeclaredField("x");
field.setAccessible(true);
field.set(a, 1);
讀取
Field f = a.getClass().getDeclaredField("x");
f.setAccessible(true);
System.out.println(f.get(a));

⑶ JAVA中反射是什麼

JAVA中反射是動態獲取信息以及動態調用對象方法的一種反射機制。

Java反射就是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;並且能改變它的屬性。而這也是Java被視為動態語言的一個關鍵性質。

Java反射的功能是在運行時判斷任意一個對象所屬的類,在運行時構造任意一個類的對象,在運行時判斷任意一個類所具有的成員變數和方法,在運行時調用任意一個對象的方法,生成動態代理。

(3)java反射修改屬性擴展閱讀:

JAVA中反射實例:

1、Class superClass=clazz.getSuperclass();//獲取父類。

System.out.println("getSuperclass:"+superClass)。

2、Class[] interfaces=clazz.getInterfaces();//獲取實現介面。

System.out.println("getInterfaces:"+interfaces.length)。

3、Constructor[] cons=clazz.getConstructors();//構造方法。

System.out.println("getConstructors:"+cons.length)。

參考資料來源:網路: JAVA反射機制

⑷ 如何通過java的反射 修改對象的屬性的值

假設obj是對象的實例、有屬性叫name

Field field=obj.getClass().getDeclaredField("name");
field.set(obj, "張三");

⑸ 如何通過java的反射 修改對象的屬性的值

Fieldfield=classType.getDeclaredField("username");
//設置壓制訪問類型檢查,只有這樣,才能獲取和設置某個具體類的Field對應版的值權。
field.setAccessible(true);
System.out.println(field.get(privateField));
//設置私有域的值
field.set(privateField,"arthinking");
System.out.println(field.get(privateField));

⑹ Java反射 在只知道類名的情況下,怎樣給其中的私有屬性賦值

利用反射能

//假設類名為A
//實例化類
=newA();
//獲取class
Classc=p.getClass();
//獲取該類所有的欄位
Field[]fields=c.getDeclaredFields();
//遍歷賦值
for(inti=0;i<fields.length;i++){
StringfiledName=fields[i].getName();
//AccessibleTest類中的成員變數為private,故必須進行此操作
fields[i].setAccessible(true);
//判斷類型
Class<?>type=fields[i].getType();
//獲取欄位類型
StringtypeName=type.getName();
System.out.println(type.getName());

//對欄位進行賦值第一個參數為對象引用第二個參數為要附的值

//如果為字元串類型
if("java.lang.String".equals(typeName)){
fields[i].set(p,"1");
}
//如果為日期類型
elseif("java.util.Date".equals(typeName)){
fields[i].set(p,newDate());
}
else{
fields[i].set(p,1);
}

}

//樓主我只是簡單的寫了下。可能還需要判斷欄位名稱以及其他類型什麼的。



最後希望樓主多看看java 文檔。

⑺ java 反射給對象中的集合賦值

access to field not allowed 報的錯誤是不允許訪問那個屬性。
所以,不能直接用這個屬性賦值(那個屬性可能是私有的)。可以看下那個屬性有沒有提供 公共的 set方法。使用method.invoke(...)
看看

⑻ java能在運行期間通過反射去改變方法的返回值么

不能,反射是可以拿到對象的屬性,方案,類等信息,如一個Persion類,有name屬性,也有相應的get/set方法,你可以通過反射去修改這個name的的值,但你不能在運行getName方法時去改變它的返回值,必須利用代理,在方法外面做攔截。 利用AOP,在返回前改變值即可,Aop的核心也就是動態代理。

⑼ 如何通過反射動態修改函數的定義

如何通過反射動態修改函數的定義
JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
JAVA反射(放射)機制:「程序運行時,允許改變程序結構或變數類型,這種語言稱為動態語言」。從這個觀點看,Perl,Python,Ruby是動態語言,C++,Java,C#不是動態語言。但是JAVA有著一個非常突出的動態相關機制:Reflection,用在Java身上指的是我們可以於運行時載入、探知、使用編譯期間完全未知的classes。換句話說,Java程序可以載入一個運行時才得知名稱的class,獲悉其完整構造(但不包括methods定義),並生成其對象實體、或對其fields設值、或喚起其methods。

閱讀全文

與java反射修改屬性相關的資料

熱點內容
word桌面找不到文件 瀏覽:585
數控車床編程怎麼做到的 瀏覽:639
哈爾濱市行政區劃代碼 瀏覽:716
如何顯示文件擴張 瀏覽:283
ps怎麼移植文件 瀏覽:443
傳奇補丁文件說明 瀏覽:513
奧維地圖怎麼設置網路疊加 瀏覽:407
linux載入庫文件so失敗 瀏覽:714
大家都想要的app 瀏覽:58
程序員比特幣 瀏覽:568
mysqlfrm是什麼文件 瀏覽:665
win10點擊文件夾聲音消失 瀏覽:963
蘋果手機空白文件名 瀏覽:833
linuxmv覆蓋合並文件夾 瀏覽:932
不開訪客網路怎麼聯網 瀏覽:631
win10的軟體卸載 瀏覽:779
crv汽車自帶網路怎麼打開 瀏覽:973
食品原材料到什麼網站購買 瀏覽:649
一年級的小孩子學編程怎麼樣 瀏覽:863
ic考勤機怎麼導出數據 瀏覽:922

友情鏈接