将一个对象合并到另一个对象

迪帕克·库马尔(Deepak Kumar):

我有两个相同类型的对象,我想创建一个可以合并两个对象的属性并可以返回单个对象的方法。

例如:考虑一个具有4个字段的ABC类

Class ABC{
String name;
String id;
String salary;
String status;
}

假设第一个对象是

ABC[name=ZEE,id=2,salary=null,status=1]

第二个对象是

ABC[name=john,id=null,salary=12200,status=null]

我想制作一个通用方法,可以合并这两个对象,并可以将结果输出为:

ABC[name=ZEE,id=2,salary=12200,status=1]

该方法应采用对象类型的两个参数:

Object  mergeObject(Object Obj1, Object Obj2){
}

注意:如果两个对象的属性都为非null,则它将采用第一个对象属性。

EpicPandaForce:

您将必须走反射路线。我假设您有一个默认的构造函数,否则以下内容将不起作用。另外,它需要两种相同的类型。它不会复制继承的字段,为此,您还需要从此处添加一些代码

@SuppressWarnings("unchecked")
public static <T> T mergeObjects(T first, T second) throws IllegalAccessException, InstantiationException {
    Class<?> clazz = first.getClass();
    Field[] fields = clazz.getDeclaredFields();
    Object returnValue = clazz.newInstance();
    for (Field field : fields) {
        field.setAccessible(true);
        Object value1 = field.get(first);
        Object value2 = field.get(second);
        Object value = (value1 != null) ? value1 : value2;
        field.set(returnValue, value);
    }
    return (T) returnValue;
}

这是一个例子

public static class ABC {
    private int id;
    private String name;
    private int[] numbers;

    public ABC() {
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int[] getNumbers() {
        return numbers;
    }

    public void setNumbers(int[] numbers) {
        this.numbers = numbers;
    }
}

public static void main(String[] args) throws InstantiationException, IllegalAccessException {
    ABC abc = new ABC();
    abc.setId(1);
    abc.setName("Hello");
    int[] newnumbers = new int[5];
    for(int i = 0; i < newnumbers.length; i++) {
        newnumbers[i] = i;
    }
    abc.setNumbers(newnumbers);
    ABC abc2 = new ABC();
    abc2.setName("World");

    ABC abcFinal = mergeObjects(abc, abc2);
    System.out.println("Properties of ABC Final:");
    System.out.println("ID: " + abcFinal.getId());
    System.out.println("Name: " + abcFinal.getName());
    System.out.println("Numbers: " + Arrays.toString(abcFinal.getNumbers()));
}

输出:

Properties of ABC Final:
ID: 1
Name: Hello
Numbers: [0, 1, 2, 3, 4]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

相对于公共密钥,如何将特定密钥合并到另一个对象?

为什么不能通过 Object.assign() 将原型合并到另一个对象?

将 Observable 和 Promise 合并到一个对象

在Python中将geojson对象的一部分合并到另一个对象中

将源从一个SVN存储库合并到另一个?

通过VSTS API将一个分支合并到另一个分支

将一个foreach的元素合并到另一个

如何将一个系列的值合并到另一个系列

如何将一个 git 分支强行合并到另一个

将一个元组序列合并到Scala中的另一个序列

将信息从一个列表合并到另一个 Scala

角度2:将一个可观察的“内部”合并到另一个

vscode-将一个分支合并到另一个分支

如何将一个分支更改合并到另一个分支?

将一个标签的“属性键”合并到另一个标签中

将一个SQL查询的结果合并到另一个

如何将一个文件合并到另一个\ Linux

将一个文件夹与源合并到另一个

将一个数组合并到另一个数组

js - 将一个对象合并到一个数组中

从数组中的一个对象到另一个对象的添加/合并元素

将巨大数组中的每个 JavaScript 对象与另一个对象合并

将多个对象合并到一个对象下并在一个命令中添加同级对象

如何将对象数组中的某些属性合并到另一个数组中?

合并 2 个对象数组,从一个对象设置键,从另一个对象设置值

将两个列名称合并到另一个

将 2 个文本框合并到另一个文本框

将一个对象包裹在另一个对象中

可以将一个对象的原型更改为另一个对象吗?