反射使用的总结

来源:互联网 发布:蚌埠学院网络教务系统 编辑:程序博客网 时间:2024/05/17 23:44

一、反射主要涉及到的类

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;}



原创粉丝点击