本文目錄一覽:
關於java反射給屬性進行賦值的問題!
Field[] fields = per1.getClass().getFields();
這句只能取到聲明為public的屬性,而你的name,age都是使用默認的private屬性。
所以取出來的fields為空。
String newvalue = oldvalue.replaceAll(“小紅”, “小白”);
這句代碼不知是不是你手誤了,不存在小紅,就不可能轉變為小白。
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反射 在只知道類名的情況下,怎樣給其中的私有屬性賦值
利用反射能
//假設類名為A
// 實例化類
A p = new A();
// 獲取class
Class c = p.getClass();
// 獲取該類所有的字段
Field[] fields = c.getDeclaredFields();
// 遍歷賦值
for (int i = 0; i fields.length; i++) {
String filedName = fields[i].getName();
// AccessibleTest類中的成員變量為private,故必須進行此操作
fields[i].setAccessible(true);
// 判斷類型
Class? type=fields[i].getType();
//獲取字段類型
String typeName=type.getName();
System.out.println(type.getName());
// 對字段進行賦值 第一個參數為對象引用第二個參數為要附的值
//如果為字符串類型
if(“java.lang.String”.equals(typeName)){
fields[i].set(p, “1”);
}
//如果為日期類型
else if(“java.util.Date”.equals(typeName)){
fields[i].set(p, new Date());
}
else{
fields[i].set(p, 1);
}
}
//樓主我只是簡單的寫了下。可能還需要判斷字段名稱以及其他類型什麼的。
最後希望樓主多看看java 文檔。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/200222.html