『壹』 java反射 在只知道類名的情況下,怎樣給其中的私有屬性賦值
利用反射能
//假設類名為A
//實例化類
Ap=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 文檔。
『貳』 javaWeb中使用反射機制為資料庫中表生成的實體類的的對象賦值
在CustomerInfo 這個類中所有的屬性(id...........detailInfo)要實現setXXX getXXX方法,並且CustomerDetailInfo 這個類中的屬性也要實現setyyyy geyyyy方法,然後再用的時候,可以實例化CustomerInfo cus這個類,然後cus.setXXX.setyyyy就能進行賦值,不知道你是否聽懂,不懂再問我
『叄』 java 中 父類寫初始化代碼 反射獲取類中的所有屬性 並按照某種邏輯賦值(我是為了初始化Spring中的Bean)
這種想法是不可能實現的,父類中是獲取不到子類的屬性的,你需要換一個思路解決問題。
『肆』 Java反射賦值會調用set方法嗎
不會。set/get方法只是javaBean的規范,用來統一管理Bean屬性的賦值操作。
『伍』 java兩個實體對象有映射關系,則怎麼用反射把一個對象的數據拿到,賦給另一個對象
這個沒什麼復雜的,你的核心意思是需要對二個對象的實例進行動作,做法如下:
1、對第一個類進行反射獲取屬性的值
2、對第二個類進行反射設置屬性的值(將1中的值設入,採用配置文件進行關系映射)
建議你看下java反射機制,不用太理解他的含義,了解怎麼用就可以,網路一下「java反射代碼」。
下面2個網站可以看看:
http://847353020-qq-com.iteye.com/blog/1003440
http://yuncode.net/code/c_51fca6e300b5b88
『陸』 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));