Blame view

src/com/fh/util/ReflectHelper.java 1.8 KB
ad5081d3   孙向锦   初始化项目
1
2
3
4
  package com.fh.util;
  
  import java.lang.reflect.Field;
  
ad5081d3   孙向锦   初始化项目
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
  public class ReflectHelper {
  	/**
  	 * 获取obj对象fieldNameField
  	 * @param obj
  	 * @param fieldName
  	 * @return
  	 */
  	public static Field getFieldByFieldName(Object obj, String fieldName) {
  		for (Class<?> superClass = obj.getClass(); superClass != Object.class; superClass = superClass
  				.getSuperclass()) {
  			try {
  				return superClass.getDeclaredField(fieldName);
  			} catch (NoSuchFieldException e) {
  			}
  		}
  		return null;
  	}
  
  	/**
  	 * 获取obj对象fieldName的属性值
  	 * @param obj
  	 * @param fieldName
  	 * @return
  	 * @throws SecurityException
  	 * @throws NoSuchFieldException
  	 * @throws IllegalArgumentException
  	 * @throws IllegalAccessException
  	 */
  	public static Object getValueByFieldName(Object obj, String fieldName)
  			throws SecurityException, NoSuchFieldException,
  			IllegalArgumentException, IllegalAccessException {
  		Field field = getFieldByFieldName(obj, fieldName);
  		Object value = null;
  		if(field!=null){
  			if (field.isAccessible()) {
  				value = field.get(obj);
  			} else {
  				field.setAccessible(true);
  				value = field.get(obj);
  				field.setAccessible(false);
  			}
  		}
  		return value;
  	}
  
  	/**
  	 * 设置obj对象fieldName的属性值
  	 * @param obj
  	 * @param fieldName
  	 * @param value
  	 * @throws SecurityException
  	 * @throws NoSuchFieldException
  	 * @throws IllegalArgumentException
  	 * @throws IllegalAccessException
  	 */
  	public static void setValueByFieldName(Object obj, String fieldName,
  			Object value) throws SecurityException, NoSuchFieldException,
  			IllegalArgumentException, IllegalAccessException {
  		Field field = obj.getClass().getDeclaredField(fieldName);
  		if (field.isAccessible()) {
  			field.set(obj, value);
  		} else {
  			field.setAccessible(true);
  			field.set(obj, value);
  			field.setAccessible(false);
  		}
  	}
  }