如何在 java 中使用泛型从基础 class 和派生 class 构建相同的 class

How to Build the same class from both base and derived class using generics in java

从数据库中获取数据并映射到两个 POJO 后,我想使用泛型为这两个 POJO 创建相同的对象:

public class BaseObj {

  String baseVar;
}

public class DerivedObj extends BaseObj {

  String derivedVar;
}
// getter setter omitted

我希望同时使用 baseVarderivedVar 值来形成同一个对象:

public class MyObject {

  String myBaseVar;
  String myChildVar; 
}
// getter setter omitted

如何创建一个通用方法,它可以同时采用基 class 和派生 class,并创建 MyObject?到目前为止我已经尝试过:

static <T extends BaseObj> MyObject buildObj(T obj) {
  MyObject myObj = new MyObject();

  myObj.setMyBaseVar(obj.getBaseVar());

  // ⬇⬇⬇ The method getDerivedVar() is undefined for the type T ⬇⬇⬇
  myObj.setMyChildVar(obj.getDerivedVar()); 
  // Clearly it can't infer getDerivedVar from base class

  return myObj;
}

从基础 class 构建 myObject 时,childVal 应该为空,但它应该从子对象获取值。

这是简化版,MyObject是深度嵌套的。有可能这样做吗?由于我的情况是将数据库数据映射到 POJO,并且这些数据彼此相关,还是我缺少其他方式?

Sandbox here

一个丑陋的转换方法:

  public static <T extends BaseObj> MyObject buildObj(T obj) {
    if (obj.getClass().equals(DerivedObj.class)) {
      DerivedObj derivedObj = (DerivedObj) obj; // casting to DerivedObj class

      return new MyObject(obj.getBaseVar(), derivedObj.getDerivedVar());
    }

    return new MyObject(obj.getBaseVar(), null);
  }