Код: Выделить всё
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);
}
Проблема заключается в том, что из-за стирания типа 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);
}