zoukankan      html  css  js  c++  java
  • bean工具类

    package com.zq.utils;

    import java.lang.reflect.Method;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.List;

    /**
    *
    * Bean工具类
    *
    * Created by MyEclipse. Author: ChenBin E-mail: chenbin_2008@126.com Date:
    * 2017年7月21日 Time: 下午3:59:08
    */
    public class BeanUtils {

    /**
    * Description : 利用反射实现对象之间相同属性复制
    *
    * @author : ChenBin(E-Mail:chenbin_2008@126.com)
    * @date : 2017年7月21日 下午4:47:07
    * @param source
    * 要复制的
    * @param to
    * 复制给
    */
    public static void copyProperties(Object source, Object to) throws Exception {
    copyPropertiesExclude(source, to, null);
    }

    /**
    * Description : 复制对象属性
    *
    * @author : ChenBin(E-Mail:chenbin_2008@126.com)
    * @date : 2017年7月21日 下午4:48:09
    * @param from
    * @param to
    * @param excludsArray
    * 排除属性列表
    */
    public static void copyPropertiesExclude(Object from, Object to, String[] excludsArray) throws Exception {
    List<String> excludesList = null;
    if (excludsArray != null && excludsArray.length > 0) {
    excludesList = Arrays.asList(excludsArray); // 构造列表对象
    }
    Method[] fromMethods = from.getClass().getMethods();
    Method[] toMethods = to.getClass().getMethods();
    Method fromMethod = null, toMethod = null;
    String fromMethodName = null, toMethodName = null;
    for (int i = 0; i < fromMethods.length; i++) {
    fromMethod = fromMethods[i];
    fromMethodName = fromMethod.getName();
    if (!fromMethodName.contains("get"))
    continue;
    // 排除列表检测
    if (excludesList != null && excludesList.contains(fromMethodName.substring(3).toLowerCase())) {
    continue;
    }
    toMethodName = "set" + fromMethodName.substring(3);
    toMethod = findMethodByName(toMethods, toMethodName);
    if (toMethod == null)
    continue;
    Object value = fromMethod.invoke(from, new Object[0]);
    if (value == null)
    continue;
    // 集合类判空处理
    if (value instanceof Collection) {
    Collection<?> newValue = (Collection<?>) value;
    if (newValue.size() <= 0)
    continue;
    }
    toMethod.invoke(to, new Object[] { value });
    }
    }

    /**
    * Description : 对象属性值复制,仅复制指定名称的属性值
    *
    * @author : ChenBin(E-Mail:chenbin_2008@126.com)
    * @date : 2017年7月21日 下午4:48:36
    */
    public static void copyPropertiesInclude(Object from, Object to, String[] includsArray) throws Exception {
    List<String> includesList = null;
    if (includsArray != null && includsArray.length > 0) {
    includesList = Arrays.asList(includsArray);
    } else {
    return;
    }
    Method[] fromMethods = from.getClass().getDeclaredMethods();
    Method[] toMethods = to.getClass().getDeclaredMethods();
    Method fromMethod = null, toMethod = null;
    String fromMethodName = null, toMethodName = null;
    for (int i = 0; i < fromMethods.length; i++) {
    fromMethod = fromMethods[i];
    fromMethodName = fromMethod.getName();
    if (!fromMethodName.contains("get"))
    continue;
    // 排除列表检测
    String str = fromMethodName.substring(3);
    if (!includesList.contains(str.substring(0, 1).toLowerCase() + str.substring(1))) {
    continue;
    }
    toMethodName = "set" + fromMethodName.substring(3);
    toMethod = findMethodByName(toMethods, toMethodName);
    if (toMethod == null)
    continue;
    Object value = fromMethod.invoke(from, new Object[0]);
    if (value == null)
    continue;
    // 集合类判空处理
    if (value instanceof Collection) {
    Collection<?> newValue = (Collection<?>) value;
    if (newValue.size() <= 0)
    continue;
    }
    toMethod.invoke(to, new Object[] { value });
    }
    }

    /**
    * Description : 从方法数组中获取指定名称的方法
    *
    * @author : ChenBin(E-Mail:chenbin_2008@126.com)
    * @date : 2017年7月21日 下午4:48:49
    */
    public static Method findMethodByName(Method[] methods, String name) {
    for (int j = 0; j < methods.length; j++) {
    if (methods[j].getName().equals(name)) {
    return methods[j];
    }
    }
    return null;
    }

    }

  • 相关阅读:
    ZOJ 3795 Grouping
    ZOJ 3791 An Easy Game
    ZOJ 3790 Consecutive Blocks
    POJ 1451 T9
    POJ 1141 Brackets Sequence
    POJ 2411 Mondriaan's Dream
    POJ 2513 Colored Sticks
    Eclipse 快捷键大全
    C# lock关键字(多线程)
    C# 内部类
  • 原文地址:https://www.cnblogs.com/rey888/p/8315921.html
Copyright © 2011-2022 走看看