package test16;
import java.util.ArrayList;
import java.util.List;
class A {
}
class B extends A {
}
public class Test1 {
public static void main(String[] args) {
List list1 = new ArrayList();
List<A> list2 = new ArrayList<A>();
List<A> list3 = new ArrayList<>();
List<A> list4 = new ArrayList<B>();
List<? extends A> list101 = new ArrayList<A>();
List<? extends A> list102 = new ArrayList<B>();
List<? extends A> list5 = new ArrayList<>();
A getA = list5.get(0);// return A
list5.add(new A());// error
list5.add(new B());// error
}
}
? extends : all add() error.
package test17;
import java.util.ArrayList;
import java.util.List;
class A {
}
class B extends A {
}
public class Test1 {
public static void main(String[] args) {
List list1 = new ArrayList();
List<B> list2 = new ArrayList<B>();
List<B> list3 = new ArrayList<>();
List<B> list4 = new ArrayList<A>();
List<? super B> list101 = new ArrayList<A>();
List<? super B> list102 = new ArrayList<B>();
List<? super B> list5 = new ArrayList<>();
Object object = list5.get(0);//return Object
list5.add(new A());// error
list5.add(new B());// ok
}
}
? super : add() run ok .
I want to know what kind of considerations the generic designer is, extends can't be added at all, and super can be added
but stackoverflow not find it answer.
thank you very much!