Наследование Java в методе с универсальными типамиJAVA

Программисты JAVA общаются здесь
Anonymous
Наследование Java в методе с универсальными типами

Сообщение Anonymous »

У меня есть методы:

Код: Выделить всё

public  ReturnType method1(List objects) {
for(T obj: objects) process(obj);
}

public void process(MyType_1 obj) {
doSomething(obj);
}

public void process(MyType_2 obj) {
doOther(obj);
}
где MyType_1 и MyType_2 расширяют MyType.
Проблема заключается в том, что из-за стирания типа JVM не может вызвать процесс метода; он просто видит Object (а не MyType_1 или MyType_2) в методе 1.
Теперь я решаю проблему с помощью дополнительного метода справки:

Код: Выделить всё

public void helpMethod(MyType obj) {
if(obj instanceof MyType_1) processMyType_1(obj);
if(obj instanceof MyType_2) processMyType_2(obj);
}
Есть ли лучший способ решить мою проблему? Кажется, использование экземпляра — не очень хорошее решение. Или это так? Я не хочу добавлять методы в классы MyType, потому что в моем случае они являются DTO.

Вернуться в «JAVA»