兩個(gè)很簡(jiǎn)單的java反射應(yīng)用
1,是否對(duì)java Web中無(wú)處不在的Vo ,Dto比較無(wú)語(yǔ)呢?想要看看其中的數(shù)據(jù),就必需不厭其煩的調(diào)用getXXX();所以寫(xiě)了個(gè)BaseVo 只要繼承它,然后直接調(diào)用它的toString()方法,即可將里面的值都打印出來(lái)






































2,2個(gè)同類(lèi)型的Vo/Dto,需要將一個(gè)中的值填充到另外一個(gè)里去。正常方法需要set/get 如果字段一多,簡(jiǎn)直是噩夢(mèng)。而利用反射,可以輕易實(shí)現(xiàn)。
1
public static void parseVO(Object obj, Object target)
2
throws Exception, NoSuchMethodException {
3
for (Field field : obj.getClass().getDeclaredFields()) {
4
Method getMethod = obj.getClass().getMethod(
5
"get" + field.getName().substring(0, 1).toUpperCase()
6
+ field.getName().substring(1));
7
Object result = getMethod.invoke(obj);
8
if (result != null) {
9
Method setMethod = target.getClass().getMethod(
10
"set" + field.getName().substring(0, 1).toUpperCase()
11
+ field.getName().substring(1), result.getClass());
12
setMethod.invoke(target, result);
13
}
14
}
15
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

posted on 2009-01-23 12:04 LinuxChan 閱讀(501) 評(píng)論(2) 編輯 收藏