Для лучшего понимания моего вопроса см следующих классов:Возвращения правильного типа Java из класса типизированного пропускания класса дженерик
public interface Invoker<R> {
public String getName();
public R getResult();
}
реализация:
public class RepairFetcher implements Invoker<List<String>> {
@Override
public String getName() {
return this.getClass().getSimpleName();
}
@Override
public List<String> getResult() {
return new ArrayList<String>();
}
}
класса, в котором его идет не так:
public class OperationService {
public <R> R invoke(Class<R> invoker, Object... parameters) {
WebserviceOperation<R> operation = new WebserviceOperation<R>(invoker);
Invoker<R> instance = operation.getInstance();
return instance.getResult();
}
}
основной класс:
public class Main {
public static void main(String[] args) {
OperationService operationService = new OperationService();
operationService.invoke(RepairFetcher.class, new Object[] {});
}
}
Проблема: В этот момент способ
operationService.invoke (RepairFetcher.class, новый объект [] {});
возвращает RepairFetcher, который не так странно, потому что аргумент в методе Invoke:
класса запустившего
который возвращает R, который является RepairFetcher.class.
То, что я хочу Я не хочу, метод Invoke вернуть класс RepairFetcher, но я хочу, чтобы вернуть объявленный тип, который Список < String>.
Возможно ли это, и если да, то как это реализовать?
Заранее благодарен!
Ницца, работает как шарм! – NickGreen