In http://docs.oracle.com/javase/tutorial/java/generics/capture.html
There is no proposed solution (that involves a helper method) for
public class WildcardErrorBad {
void swapFirst(List<? extends Number> l1, List<? extends Number> l2) {
Number temp = l1.get(0);
l1.set(0, l2.get(0)); // expected a CAP#1 extends Number,
// got a CAP#2 extends Number;
// same bound, but different types
l2.set(0, temp); // expected a CAP#1 extends Number,
// got a Number
}
}
Reader feedback suggested rewriting swapFirst to the following as a solution:
public <T extends Number> void swapFirst(List<T> l1, List<T> l2){
T temp = l1.get(0);
l1.set(0,l2.get(0));
l2.set(0, temp);
}
There is no proposed solution (that involves a helper method) for
public class WildcardErrorBad {
void swapFirst(List<? extends Number> l1, List<? extends Number> l2) {
Number temp = l1.get(0);
l1.set(0, l2.get(0)); // expected a CAP#1 extends Number,
// got a CAP#2 extends Number;
// same bound, but different types
l2.set(0, temp); // expected a CAP#1 extends Number,
// got a Number
}
}
Reader feedback suggested rewriting swapFirst to the following as a solution:
public <T extends Number> void swapFirst(List<T> l1, List<T> l2){
T temp = l1.get(0);
l1.set(0,l2.get(0));
l2.set(0, temp);
}