javareflection

Merging two objects in Java


I have two objects of same type.

Class A {
  String a;
  List b;
  int c;
}

A obj1 = new A();
A obj2 = new A();

obj1 => {a = "hello"; b = null; c = 10}
obj2 => {a = null; b = new ArrayList(); c = default value}

Can you please let me know what is the best way to combine this objects into single object?

obj3 = {a = "hello"; b = (same arraylist from obj2); c = 10}

Solution

  • Maybe something like

    class A {
        String a;
        List<..> b;
        int c;
    
        public void merge(A other) {
            this.a = other.a == null ? this.a : other.a;
            this.b.addAll(other.b);
            this.c = other.c == 0 ? this.c : other.c;
        }
    }
    
    A a1 = new A();
    A a2 = new A();
    
    a1.a = "a prop";
    a2.c = 34;
    
    a1.merge(a2);
    

    A.merge might return a new A object instead of modifing current.