Say I have this code:
IOperation<?> parameter1 = null;
ITotallyDifferentOperation<?> parameter2 = null;
switch (OPERATION_TYPE) {
case TYPE_1:
parameter1 = new MyOperation<Type1>();
parameter2 = new MyTotallyDifferentOperation<Type1>();
break;
case TYPE_2:
parameter1 = new MyOperation<Type2>();
parameter2 = new MyTotallyDifferentOperation<Type2>();
break;
...
myMethod(parameter1, parameter2);
The method which accept the two interfaces
implemented by MyOperation
and MyTotallyDifferentOperation
:
void myMethod(final IOperation<?> operation, final ITotallyDifferentOperation<?> totallyDifferentOperation) {
operation.processList(totallyDifferentOperation.getList());
}
totallyDifferentOperation.getList()
returns a List<T>
which is equal in type of the List<T>
accepted by operation.processList()
.
This code obviously does not compile.
Are there other patterns to obtain the same result or this code can be corrected?
Aucun commentaire:
Enregistrer un commentaire