Преобразование списка в подкласс

У нас есть код, который в настоящее время вызывает удаленный 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>?

Будет ли удаленный EJB знать о ClassB, создавать и возвращать экземпляры этого класса (завернутые в List<ClassA>)? Если нет, вам нужно будет сгенерировать (скопировать) экземпляр ClassB локально из каждого экземпляра ClassA, возвращаемого удаленным EJB.

Janus Varmarken 13.09.2018 20:25

Это похоже на плохое использование наследования. Композиция звучит намного лучше. Пусть класс B имеет атрибут класса A, а также добавит новые свойства.

fps 13.09.2018 20:40
0
2
54
1

Ответы 1

Вы не можете преобразовать суперкласс в подкласс. Вы можете взять каждое свойство и установить в новом экземпляре класса B один за другим или использовать преобразователи, такие как бульдозер.

ТАК Ответьте на это: Преобразование объекта суперкласса в подкласс

Другие вопросы по теме