java判断对象无数据_java对象的一些基本操作,复制对象,判断是否为基本数据类型等...

public class BeanUtils {

private static final Logger logger = Logger.getLogger(BeanUtils.class);

public static void copyNotNull(Object src, Object dest) {

baseCopy(src, dest, false);

}

public static void copy(Object src, Object dest) {

baseCopy(src, dest, true);

}

public static void baseCopy(Object src, Object dest, boolean isCopyNull) {

Map objMap = getObjectAllField(src, true);

Map destMap = getObjectAllField(dest, true);

Set objFieldNameSet = objMap.keySet();

Field objField = null;

Field descField = null;

for (String fieldName : objFieldNameSet) {

objField = objMap.get(fieldName);

descField = destMap.get(fieldName);

if (descField != null) {

if (objField.getType().equals(descField.getType())) {

objField.setAccessible(true);

descField.setAccessible(true);

try {

if ((isCopyNull || objField.get(src) != null) && !Modifier.isFinal(objField.getModifiers())) {

descField.set(dest, objField.get(src));

}

} catch (Exception e) {

logger.error(e.getMessage(), e);

}

}

}

}

}

/**

* 获取该对象自己以及继承的上层对象的所有属性

*

* @param obj

* @param isParentField

*            是否包含父类的属性

* @return

*/

public static Map getObjectAllField(Object obj, boolean isParentField) {

Map fieldMap = new HashMap();

Class> objCls = obj.getClass();

while (objCls != null) {

Field[] fields = objCls.getDeclaredFields();

for (Field field : fields) {

if (!fieldMap.containsKey(field.getName())) {

fieldMap.put(field.getName(), field);

}

}

if (!isParentField)

break;

objCls = objCls.getSuperclass();

}

return fieldMap;

}

/**

* 获取该对象自己以及继承的上层对象的所有属性

*

* @param class

* @param isParentField

*            是否包含父类的属性

* @return

*/

public static Map getObjectAllField(Class> objCls, boolean isParentField) {

Map fieldMap = new HashMap();

while (objCls != null) {

Field[] fields = objCls.getDeclaredFields();

for (Field field : fields) {

if (!fieldMap.containsKey(field.getName())) {

fieldMap.put(field.getName(), field);

}

}

if (!isParentField)

break;

objCls = objCls.getSuperclass();

}

return fieldMap;

}

/**

* 获取对象属性值

*

* @param obj

* @param fieldName

* @return

*/

public static Object getObjectFieldValue(Object obj, String fieldName) {

Class> cls = obj.getClass();

try {

Field field = cls.getField(fieldName);

field.setAccessible(true);

return field.get(obj);

} catch (NoSuchFieldException e) {

logger.error(e.getMessage(), e);

} catch (SecurityException e) {

logger.error(e.getMessage(), e);

} catch (IllegalArgumentException e) {

logger.error(e.getMessage(), e);

} catch (IllegalAccessException e) {

logger.error(e.getMessage(), e);

}

return null;

}

public static Object getObjectByMethodName(Object obj, String methodName) {

Class> cls = obj.getClass();

try {

Method method = cls.getDeclaredMethod(methodName, null);

return method.invoke(obj, null);

} catch (NoSuchMethodException e) {

logger.error(e.getMessage(), e);

} catch (SecurityException e) {

logger.error(e.getMessage(), e);

} catch (IllegalAccessException e) {

logger.error(e.getMessage(), e);

} catch (IllegalArgumentException e) {

logger.error(e.getMessage(), e);

} catch (InvocationTargetException e) {

logger.error(e.getMessage(), e);

}

return null;

}

/**

* 判断对象是否为基本数据类型

*

* @param obj

* @return

*/

public static boolean isBaseType(Object obj) {

try {

Field field = obj.getClass().getField("TYPE");

if(field == null){

return false;

}

return ((Class>) field.get(null)).isPrimitive();

} catch (Exception e) {

return false;

}

}

/**

* 判断对象是否为基本数据类型

*

* @param clazz

* @return

*/

public static boolean isBaseType(Class> clazz) {

try {

Field field = clazz.getField("TYPE");

if(field == null){

return false;

}

return ((Class>) field.get(null)).isPrimitive();

} catch (Exception e) {

return false;

}

}

/**

* 获取对象集合中某个属性的集合

*

* @param list

* @param fieldName

* @param cls

* @return

*/

public static  List getFieldValueList(List> list, String fieldName, Class cls) {

List fieldValueList = new ArrayList();

if (list.size() == 0) {

return fieldValueList;

}

Class> clazz = list.get(0).getClass();

try {

Field field = clazz.getDeclaredField(fieldName);

field.setAccessible(true);

for (Object obj : list) {

fieldValueList.add(cls.cast(field.get(obj)));

}

} catch (Exception e) {

logger.error(e.getMessage(), e);

}

return fieldValueList;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值