一、反射主要涉及到的类
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;
}