Create a child class object based on a parent one

Weijun Wang weijun.wang at oracle.com
Fri Aug 8 00:10:22 UTC 2014


I have a class A and a sub class B. B contains no extra fields than A.

Now there is an object of A and I want to create a B which is 
"identical" to it. What I am doing is

         public B(A old) {
             for (Field f: A.class.getDeclaredFields()) {
                 if (!Modifier.isStatic(f.getModifiers())) {
                     f.setAccessible(true);
                     try {
                         f.set(this, f.get(old));
                     } catch (Exception e) {
                         throw new RuntimeException(e);
                     }
                 }
             }
         }

Is there a better way to do this? I can think of Unsafe.

Please note I cannot put an A inside B because there are instanceof 
calls that B must isa A. Also, the A object will be discarded so there 
is no need to clone the fields.

Thanks
Max



More information about the core-libs-dev mailing list