Java常用对象操作工具代码实例

 更新时间:2020年12月10日 10:06:16   作者:码农记事本  
这篇文章主要介绍了Java常用对象操作工具代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

对象复制(反射法)

public static void copyProp(Object from, Object to, String... filterProp) {
    HashSet<String> filterSet = new HashSet<String>(Arrays.asList(filterProp));
    Class<?> fromc = from.getClass();
    Class<?> toc = to.getClass();
    List<Field> to_fields = new ArrayList<Field>() ;
    while (toc != null) {
      to_fields.addAll(Arrays.asList(toc.getDeclaredFields()));
      toc = toc.getSuperclass();
    }
    for (Field to_field : to_fields) {
      try{
        if (filterSet.contains(to_field.getName())||"serialVersionUID".equals(to_field.getName())) {
          continue;
        }
        Field from_field = null;
        try{
          from_field = fromc.getDeclaredField(to_field.getName());
        }catch (Exception e){
          continue;
        }
        from_field.setAccessible(true);
        Object value = from_field.get(from);
        if(value==null){
          continue;
        }
        to_field.setAccessible(true);
        to_field.set(to, value);
      }catch (Exception e){
        e.printStackTrace();
      }
    }
  }
  • 只copy有值对象
  • 不需要copy的属性用filterProp
  • 是能过反射属性注入方法实现,所有属性的名称类型必须一样

对象复制(fastJson转换)

单个

public static <T> T bean2OtherBean(Object bean, Class<T> tClass){
	return JSON.parseObject(JSON.toJSONString(bean),tClass);
}

列表

public static <T> List<T> list2OtherList(List originList, Class<T> tClass){
	List<T> list = new ArrayList<>();
	if(!CollectionUtils.isEmpty(originList)){
		for (Object obj : originList) {
			T t = bean2OtherBean(obj,tClass);
			list.add(t);
		}
	}
	return list;
}

fastjson实现,属性不一样必须用注解

对象转MAP

public static <K,V> Map<K,V> bean2map(Object obj) throws IllegalAccessException {
	Map<String, Object> map = new HashMap<>();
	Class<?> clazz = obj.getClass();
	for (Field field : clazz.getDeclaredFields()) {
		field.setAccessible(true);
		String fieldName = field.getName();
		Object value = field.get(obj);
		map.put(fieldName, value);
	}
	return (Map<K, V>) map;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • uploadify上传及后台文件合法性验证的代码解析

    uploadify上传及后台文件合法性验证的代码解析

    这篇文章主要介绍了uploadify上传及后台文件合法性验证的代码解析,整段代码分为后台上传方法,文件合法性验证类,前端上传js,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • Java事务管理学习之JDBC详解

    Java事务管理学习之JDBC详解

    这篇文章主要介绍了Java事务管理学习之JDBC的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Spring Boot(二)之web综合开发

    Spring Boot(二)之web综合开发

    本篇文章为大家介绍spring boot的其它特性(有些未必是spring boot体系桟的功能,但是是spring特别推荐的一些开源技术本文也会介绍),对了这里只是一个大概的介绍,特别详细的使用我们会在其它的文章中来展开说明
    2017-05-05
  • 关于@Autowired的使用及注意事项

    关于@Autowired的使用及注意事项

    这篇文章主要介绍了关于@Autowired的使用及注意事项,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Mybatis-plus:${ew.sqlselect}用法说明

    Mybatis-plus:${ew.sqlselect}用法说明

    这篇文章主要介绍了Mybatis-plus:${ew.sqlselect}用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • SpringBoot结合Redis配置工具类实现动态切换库

    SpringBoot结合Redis配置工具类实现动态切换库

    本文主要介绍了SpringBoot结合Redis配置工具类实现动态切换库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 利用Java工具类Hutool实现验证码校验功能

    利用Java工具类Hutool实现验证码校验功能

    这篇文章主要介绍了利用Java工具类Hutool实现验证码校验功能,利用Hutool实现验证码校验,校验的Servlet与今天的第一篇是一样的,唯一就是验证码的生成是不一样的,利用Hutool生成验证码更快捷.需要的朋友可以参考下
    2022-10-10
  • java jdk动态代理详解

    java jdk动态代理详解

    动态代理类的Class实例是怎么生成的呢,是通过ProxyGenerator类来生成动态代理类的class字节流,把它载入方法区
    2013-09-09
  • Java的PriorityBlockingQueue优先级阻塞队列代码实例

    Java的PriorityBlockingQueue优先级阻塞队列代码实例

    这篇文章主要介绍了Java的PriorityBlockingQueue优先级阻塞队列代码实例,PriorityBlockingQueue顾名思义是带有优先级的阻塞队列,为了实现按优先级弹出数据,存入其中的对象必须实现comparable接口自定义排序方法,需要的朋友可以参考下
    2023-12-12
  • Java枚举与.net枚举区别详解

    Java枚举与.net枚举区别详解

    这篇文章主要介绍了Java枚举与.net枚举区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02

最新评论