Наследование 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);
}
где

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

class MyType_1 extends MyType;
и

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

class MyType_2 extends 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);
}
Есть ли лучший способ решить мою проблему? Кажется, использование экземпляра — не очень хорошее решение. Или нет?
Что мне делать?

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