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

questionAnswers(3)

yourAnswerToTheQuestion