精华内容
下载资源
问答
  • 最近遇到一个问题,要完成两个对象之间的复制,也就是根据对象A的属性值生成对应的对象B。其中A与B的属性名不同,但是其实是一个东西。前后交了不同的名字而已。因为会后很多的这样的情况,不可能每一个对象都写一个...
    最近遇到一个问题,要完成两个对象之间的复制,也就是根据对象A的属性值生成对应的对象B。其中A与B的属性名不同,但是其实是一个东西。前后交了不同的名字而已。因为会后很多的这样的情况,不可能每一个对象都写一个方法。我寻求一种通用的方法。网上找到BeanUtils.copyProperties()等方法copy对象要求属性名一致才可以复制。。研究了一天最后自己解决。特此贴出来给同样碰到此问题的同学们分享!!思路就是,在每一个后台对象中添加与前端对象的的属性名映射表例如Map<String,string> param;param.put("name","id")..
    
    然后写一个工具方法完成如下功能:
     利用反射获得A的属性名数组,使用new CglibBean(temp)动态生成对应的转换了属性名的Object对象。(CglibBean用法请百度)。然后使用PropertyUtils.copyProperties(k, object);完成对象复制。具体看代码自己领悟:
    ------------------------------------------------------------------------------------------------------------------------------------------------
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.util.HashMap;
    import java.util.Map;

    import org.apache.commons.beanutils.PropertyUtils;


    import com.xiao2edu.setcfg.server.entity.TeacherPeriod;
    import com.xiao2edu.setcfg.server.param.StringParam1;

    public class BeanConvert {
    //k为对应的实体对象,J为StringParam对象,param为属性名对应表
    public static Object getObject(Object k,Object j,Map<String,String> param) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException{
    //BeanUtils.copyProperties(k, j, str);
    /*BeanUtils.copyProperties(k, j);*/
    //获取实体对象属性名数组
    Field[] fields=j.getClass().getDeclaredFields();
    //属性名,属性类型
    Map<String , Class> temp=new HashMap<>();
    //属性名,属性值
    Map<String , String> valueParam=new HashMap<>();

    for(Field f:fields){

    //设置访问权限,否则不能访问私有化属性

    f.setAccessible(true);

    //转换属性名,属性类型

    temp.put(param.get(f.getName()), Class.forName("java.lang.String"));
    /*System.out.println("kanxia"+f.getName());
    System.out.println("属性名"+param.get(f.getName()));
    */
    String value="";
    Object valueObject=f.get(j);
    if(valueObject!=null){
    value=valueObject.toString();
    }
    valueParam.put(param.get(f.getName()), value);
    //System.out.println("哈哈"+valueParam.toString());

    }
    //System.out.println("AAA:"+temp.toString());
    //根据参数数组生成CglibBean对象
    CglibBean cglibBean=new CglibBean(temp);

    for(Map.Entry<String, String> entry:valueParam.entrySet()){
    //System.out.println(entry.getKey());
    cglibBean.setValue(entry.getKey(), entry.getValue());
    }
    Object object=cglibBean.getObject();
    //用object给K赋值
    PropertyUtils.copyProperties(k, object);


    return k;
    }
    public static  void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException{
    TeacherPeriod teacherPeriod=new TeacherPeriod();
    StringParam1 stringParam1=new StringParam1("11","22","33","44");

    teacherPeriod=(TeacherPeriod) getObject( teacherPeriod ,stringParam1,teacherPeriod.getMapping());
    System.out.println(stringParam1.getA());
    System.out.println(teacherPeriod.toString());
    }
    }
    展开全文
  • 我写一个类Class A,类A中有多不同的构造函数: class A { public A() public A(parm1,parm2) public A(clsCustom s) //用于自定义类 } 我创建了两个对象,a1=new A(p1,p2),a2=new A(clsCustom s1) 我需要用a2自定义...
  • 有两个对象: baseinfo和extendinfo baseinfo属性:id ,name ,add extendinfo属性:phone ,time 如何把这两个对象的属性拼接到一起
  • java中,有两个list,list和list,AB对象的属性略有不同,现在想把A中的属性复制到B中,我们可以通过fastJOSN的方式方便的实现 package com.hanshow.wise.base.operate.util; import java.util.List; import ...

    java中,有两个list,list和list,AB对象的属性略有不同,现在想把A中的属性复制到B中,我们可以通过fastJOSN的方式方便的实现

    package com.hanshow.wise.base.operate.util;
    
    import java.util.List;
    
    import com.alibaba.fastjson.JSON;
    
    /**
     * 两个对象或集合同名属性赋值
    
     */
    public class ObjectConversion {
    	
    	/**
    	 * 从List<A> copy到List<B>
    	 * @param list List<B>
    	 * @param clazz B
    	 * @return List<B>
    	 */
    	public static <T> List<T> copy(List<?> list,Class<T> clazz){
    		String oldOb = JSON.toJSONString(list);
    		return JSON.parseArray(oldOb, clazz);
    	}
    	
    	/**
    	 * 从对象A copy到 对象B
    	 * @param ob A
    	 * @param clazz B.class
    	 * @return B
    	 */
    	public static <T> T copy(Object ob,Class<T> clazz){
    		String oldOb = JSON.toJSONString(ob);
    		return JSON.parseObject(oldOb, clazz);
    	}
    }
    
    
    展开全文
  • java中万物皆对象,不会你是线程,还是异步任务,还是。。。都可以用以下的三种通用方法来进行对象间数据的交互。当然android相比java有自己独特的数据交互方式,这些会在后面的文章中讲到,本篇文章意在对java通用...

      java中万物皆对象。不论你是线程,还是异步任务,还是。。。都可以用以下的三种通用方法来进行对象间数据的交互。当然android相比java有自己独特的数据交互方式,这些会在后面的文章中讲到,本篇文章意在对java通用的对象间的数据交互进行总结。

    一、通过构造函数传递

      构造函数很大程度上是方便参数的传递,以达到在新建对象的时候,同时对这个对象的一些属性进行初始化。我们经常需要根据自己的需要,重载类的构造方法。我们可以在对象初建的时候把它需要的数据传递给它,以实现不同对象之间数据的交互。

    二、getXXX与setXXX方法

      基于java面向对象编程中的封装性和安全性的考虑,我们常将类中的成员变量封装在类内部(即使用private修饰他们),这样就提高了数据的安全性,当我们想要操作这些成员变量怎么办呢?我们可以通过两种方法,第一种即通过public方式的构造器(或称构造函数),也就是方法一讲解的内容,对象一实例化就对该变量赋值。第二种方法就是通过set和get方法。

      我们一般在写pojo类的时候,都会给成员变量设置相应的get和set方法。

      其实get和set的应用场景不限于此,我们的思维不能被局限。在android中,activity想得到子线程中的handler,我们就可以给子线程写一个getHandler方法,然后在activity中用子线程的对象调用getHander方法,就可以得到子线程的handler了。

      还有,listview遇到checkbox,我们会在adapter中建一个map来存储checkbox的状态,在activity中,在全选、取消的按钮监听方法里,我们就需要取到adapter的map,然后更新map。解决方案就是:在adapter中写一个getMap方法。

    三、接口回调

      本部分之前的博客已经详细说明:http://blog.csdn.net/a910626/article/details/45920893

    展开全文
  • 具体实现就是,将对象(或者List)转换为json,然后再将json信息转换为指定的对象(或者指定对象的List),具体代码贴在下面: /** * 从List<A> copy到List * * @param list * @param clazz * @param * @...

    业务中遇到,使用Mybatis generator生成的Example和Mapper从数据库查询结果,该结果使用的实体类是和数据库字段一一对应的,但是不想把该实体类的所有属性都返回给前端,于是新建一个实体类,其中只有前端需要的属性,然后想把List<UserA>中的对象全部拷贝到List<UserB>中,其中UserA属性多,UserB属性少,字段名是一样的。

     

    方法1:使用Spring的BeanUtils.copyProperties()或者PropertyUtils.copyProperties()

    将List1循环,将UserA中需要的属性Set到UserB中。这个方法略麻烦,因为还需要循环,并且创建新对象。

     

    方法2:借助FastJson的Json和对象转换的功能

    具体实现就是,将对象(或者List)转换为json,然后再将json信息转换为指定的对象(或者指定对象的List),具体代码贴在下面:

    /**
     * 从List<A> copy到List<B>
     *
     * @param list
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> List<T> copy(List<?> list, Class<T> clazz) {
    	String oldOb = JSON.toJSONString(list);
    	return JSON.parseArray(oldOb, clazz);
    }
    
    /**
     * 从对象A copy到 对象B
     *
     * @param ob    A
     * @param clazz B.class
     * @return B
     */
    public static <T> T copy(Object ob, Class<T> clazz) {
    	String oldOb = JSON.toJSONString(ob);
    	return JSON.parseObject(oldOb, clazz);
    }


     

    Refer:https://blog.csdn.net/hw120219/article/details/89536440

    转载于:https://my.oschina.net/guquanxin/blog/3049818

    展开全文
  • JAVA 两个对象不同为什么他们的hashcode有可能相同

    万次阅读 热门讨论 2018-04-04 11:01:59
    hashCode是所有java对象的固有方法,如果不重载的话,返回的实际上是该对象在jvm的堆上的内存地址,而不同对象的内存地址肯定不同,所以这个hashCode也就肯定不同了。如果重载了的话,由于采用的算法的问题,有可能...
  • 昨天开发的时候遇到一个需求,需要在两个不同的List对象中,取出所有不同对象的集合,大家看的时候可能会觉得绕口,下面简单举例说明: 对象 Student  属性 id,name 两个集合 1、List lists1 = new ArrayList...
  • 一、前台传递不同类不同对象 1、属性名不同,可直接封装进controller方法的对象参数(经验证) 2、属性名有重复,可在重复的类中设置一个值类型,后台再去将值类型值赋值给实例变量(经验证) 二、同一类多个对象...
  • 一、前台传递不同类不同对象 1、属性名不同,可直接封装进controller方法的对象参数(经验证) 2、属性名有重复,可在重复的类中设置一个值类型,后台再去将值类型值赋值给实例变量(经验证) 二、同一类多个对象...
  • JAVA利用泛型返回类型不同对象

    千次阅读 2016-09-25 23:46:39
    有时需要在方法末尾返回类型不同对象,而return 语句只能返回一个或一组类型一样的对象。此时就需要用到泛型。首先先解释个概念, 元组: 它是将一组对象直接打包存储于其中的一个单一对象,这个容器对象允许读取...
  • 一个List对象转换为另一个List对象 两个 List 一个存放 BaseCustomerEntity 对象:List 一个存放 BaseCustomerNameListVo 对象:List 现在要把他们转换,简便的方式是: Lists.transform(List fromList, Function<...
  • C++中不同类型对象的存放位置

    千次阅读 2018-11-07 17:30:49
    C++中不同类型对象的存放位置1. 存储区域2. 不同类型对象的存储2.1 全局对象2.2 局部对象2.3 静态局部对象2.4 动态对象 在C++中,定义的对象被放在不同的区域中,以下就各个区域以及不同类型对象的存储情况作简要...
  • 假设现在有需求如下:比较2个相同类型的不同对象,找到这2个对象的不同的地方,并展示记录一下。当然说的是相互对应的属性啦。 带着这个需求,看下面的例子。(我写代码的都不嫌弃长,你看代码的就也别嫌弃咯。) ...
  • 图形对象 Matlab中,把用于数据可视化和界面...句柄是图形对象的唯一标识符,不同对象的句柄不可 能重复和混淆 计算机屏幕作为根对象(root)由 系统自动建立,其句柄值为0。而图形窗口对象(figure)的句柄值为一正整数...
  • java 的List add 不同类型的对象

    万次阅读 2016-12-29 10:58:12
    问题:今天看java的list ,list后面的<> 里面可以填多种类型,但是如果不填写类型那就默认为 Object 类型。 所有我门 add 到 list 里的 数据都会被转换成 ...所有对象(包括数组)都实现这个类的方法。 在不明确给出
  • 问题:不同的客户端去请求Servlet,该Servlet是同一个实例化对象还是不同的实例化对象?(即,是每次请求Servlet都会实例化一个该Servlet对象,还是每次请求都使用的是同一个Servlet对象?)
  • C++面向对象基础

    万次阅读 多人点赞 2018-05-20 12:40:59
    面向对象基础面向对象三大特性封装性:数据和代码捆绑在一起,避免外界...继承可以扩展已存在的代码多态性:同一事物表现出不同事物的能力,即向不同对象发送同一消息,不同的对象在接收时会产生不同的行为(重载...
  • JAVA 利用泛型返回类型不同对象

    千次阅读 2016-09-27 09:41:08
    有时需要在方法末尾返回类型不同对象,而return 语句只能返回一个或一组类型一样的对象。此时就需要用到泛型。首先先解释个概念, 元组: 它是将一组对象直接打包存储于其中的一个单一对象,这个容器对象允许读取...
  • 最近工作上遇到一个要求两个不同list对象合并后并排序,网上有很多相关文章,但都是相同的list对象合并在排序,可是我遇到不同的list对象合并后并排序。于是自己动手写了一个。大家可以参考。 问题描述从数据库中...
  • 2个不同对象,属性名不一样,不用get/set方法,怎么将一个对象中的属性赋值到另一个对象的属性中 对象内有几十个属性,如何用最少的代码实现
  • 我如何能够做到通过传入不同的code,实例化不同对象。 ![图片说明](https://img-ask.csdn.net/upload/201907/08/1562570603_918492.png) 换句话说红框中的内容是否是可以使用变量存储的,我自己试过使用...
  • 使用泛型实现返回不同类型的对象

    千次阅读 2018-07-26 17:31:48
    本次功能的实现场景:读取Yaml配置文件,然后将其中的信息转换成指定的对象。 在这里定义了一个Yaml的工具类,希望工具类的返回对象类型可以根据调用方法时传入的对象类型来定义。 通过泛型实现 工具类: ...
  • java对象数组 创建对象数组,初始化对象数组

    万次阅读 多人点赞 2019-07-30 16:34:15
    当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同对象对象数组的定义和使用: 对象数组的定义与一般数组的定义类似,但是需要为每一个元素实例化。 对象数组的声明形式...
  • 1、String对象的创建 1.1字面量创建String对象 String s1 = "abc";//字符串常量池中添加"abc"对象,返回引用地址给s1对象 String s2 = "abc";//通过equals()方法判断常量池中已有值为abc的对象,返回相同的引用 ...
  • List中存放不同类型对象之间的转换

    万次阅读 2016-04-18 13:02:10
    有时候我们会碰到这种问题:两个List中存放的对象不一样,但是大部分的属性相同,想把其中一个List中的对象加上别的属性之后变成另一个List中的对象,例如: List list = req.getNafmiiMemberInfo(); List tempList = new...
  • 什么是面向对象

    万次阅读 多人点赞 2019-09-09 16:54:50
    面向对象(OOP)概述 从我们开始接触Java这门语言后,就有人告诉我们这是一门面向对象的语言。说的最多的是new个对象,其实并不知道什么是对象。以为对象就是一个class(类),并不觉得有什么特殊。直到很久之后,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,441,545
精华内容 1,376,618
关键字:

不同的对象