将列表转换为子类

时间:2018-09-13 18:20:32

标签: java generics inheritance

我们有一些代码当前正在调用远程EJB,该远程EJB返回ClassA对象的列表。我需要向ClassA添加更多属性,但是我被告知我们根本不想修改远程EJB。因此,我创建了一个ClassB并扩展了ClassA并添加了这些新属性。因此,我遇到的问题是我不知道如何将List<ClassA>转换为List<ClassB>

public class ClassA {

    private String propA;
    private String propB;

}

public class ClassB extends ClassA {

    private String propC;
    private String propD;

}

public class ServiceClass {

    public List<ClassA> getInfo() {
        List<ClassA> myInfo = remoteEjb.serviceCall();
        return myInfo;
    }

}

如何将myInfo变成List<ClassB>

1 个答案:

答案 0 :(得分:0)

您不能将超类转换为子类。您可以一个接一个地获取每个属性并在B类的新实例中进行设置,也可以使用推土机之类的转换器。

SO对此回答:Converting Object of SuperClass to Sub Class