Criando tarefas usando genéricos
stou tentando criar uma API para encadear tarefa
rimeiro, eu projetei uma interface muito simples que define uma taref
public interface Task<U, V> {
U execute(V input);
}
OndeV
é o tipo de entrada eU
o tipo de saída da tarefa.
O que eu desejo criar é umChain
classe que encadearia uma lista deTasks
.
or exemplo, eu gostaria de executar:Task1<TypeA, TypeB> -> Task2<TypeB, TypeC> -> Task3<TypeC, TypeD>
EsteChain
class seria, assim, umTask<TypeA, TypeD>
.
Então escrevi este código, que não compila:
public class Chain<U, V> implements Task<U, V> {
List<Task<?, ?>> taskList;
public Chain() {
taskList = new LinkedList<Task<?, ?>>();
}
@Override
public U execute(V input) {
V currentInput = input;
U output = null;
for (Task<?, ?> task : taskList) {
output = task.execute(currentInput);
// Compile error because currentInput is of type V
// and output of type U
currentInput = output; // Compile error as well
}
return output;
}
// Other methods to add and remove tasks in the list
}
Entendo por que ele não pode ser compilado, mas não tenho idéia de como implementar algo que funcione e responda meu problem
lguém já enfrentou esse tipo de problem
Atenciosamente
Ben