package org.jplus.util;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* 对任意类中的成员变量进行set或者get操作
* @author hyberbin
*/
public class FieldUtil {
/**
* 实体的getXXX方法
*
* @param name 成员变量名
* @return
*/
public static String get(String name) {
String get = "get" + (name.charAt(0) + "").toUpperCase() + name.substring(1);//get+变量名的第一个字母大写
return get;
}
/**
* 实体的setXXX方法
*
* @param name 成员变量名
* @return
*/
public static String set(String name) {
return "set" + (name.charAt(0) + "").toUpperCase() + name.substring(1);//get+变量名的第一个字母大写
}
/**
* 取得一个成员变量的值
*
* @param field 成员变量
* @return
*/
public static Object getFieldValue(Object tablebean, String fieldName) {
if (tablebean==null||fieldName == null || fieldName.trim().equals("")) {
return null;
}
try {
Method method = tablebean.getClass().getMethod(get(fieldName), (Class[]) null);//取得get方法
return method.invoke(tablebean, (Object[]) (Class[]) null);//调用实体类的getXXX方法
} catch (NoSuchMethodException noSuchMethodException) {
LoggerManage.logger.getLogger("没有这个方法:" + get(fieldName), noSuchMethodException);
} catch (SecurityException securityException) {
} catch (IllegalAccessException illegalAccessException) {
} catch (IllegalArgumentException illegalArgumentException) {
} catch (InvocationTargetException invocationTargetException) {
}
return null;
}
/**
* 存入一个实体的成员变量值
* @param field
* @param value
* @return
*/
public static Object setFieldValue(Object tablebean, String fieldName, Object value) {
if (value == null) {
return tablebean;
}
try {
Method method = tablebean.getClass().getMethod(set(fieldName), value.getClass());//取得set方法
method.invoke(tablebean, value);//调用实体类的setXXX方法
} catch (Exception ex) {
LoggerManage.logger.getLogger("FieldUtil存入一个实体的成员变量值失败!", ex);
}
return tablebean;
}
/**
* 把两个相同类型的对象复制成值也相同
* @param src 源对象
* @param dist 目的对象
*/
public static void clone(Object src, Object dist) {
if (src != null && dist != null && src.getClass().equals(dist.getClass())) {
Field[] declaredFields = src.getClass().getDeclaredFields();
for (Field field : declaredFields) {
setFieldValue(dist, field.getName(), getFieldValue(src, field.getName()));
}
}
}
}