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