反射使用的总结

一、反射主要涉及到的类
Class 类的信息
Field 字段信息
Method 方法信息

二、主要涉及的方法

.Class
1.获取属性
Field[] getDeclaredFields(); 获取所有声明的字段包括父类和私有的
Field[] getFields();获取所有的可访问的公共字段
Field getFields(String fieldName); 获取该名称可访问的公共字段
Method getMethod(String methodName,Class paramType); 获取方法
.Field               
1.判断修饰符  
int getModifiers(); 通过返回的数字来判断修饰符
例如:26-private static final      18 -private final
2、设置私有字段可访问
void setAccessible(boolean bool); 传入的参数为true表示可以访问私有字段
3、 获取某个对象该字段的值
Object get(Object obj) ; obj为传入的对象
4、获取该字段的类型
Class getType();
.Method
1.执行某个对象的方法
invoke(obj,param); 执行obj的该方法
以上仅仅是对于项目中用到的进行总,并不全面,仅供参考
下面是一个把符合javaBean规范的对象中的String类型的字段值进行去空的工具方法
public static <T> T trim(T obj, Class<T> cls) {
		// 获取所有声明的属性
		try {
			Field[] fields = cls.getDeclaredFields();
			for (Field field : fields) {
				if (field.getModifiers() == 26 || field.getModifiers() == 18)
					continue;
				Object value = field.get(obj);// 或obj对象该属性的值
				if (null != value && field.getType() == String.class) {
					field.setAccessible(true);// 允许访问私有变量
					String fieldName = field.getName();// 获取属性名称
					String methodName = "set"
							+ fieldName.substring(0, 1).toUpperCase()
							+ fieldName.substring(1);// 获取set方法名称
					Method method = cls.getMethod(methodName, String.class);// 获取set方法
					String str = null;
					str = ((String) value).trim();// 去空
					method.invoke(obj, str);// 执行set方法
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return obj;
	}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章