List<? extends T> upperList=new ArrayList();;
List<? super T> floorList=new ArrayList();
//合法
(T)upperList.get(index)
//不合法
upperList.set(new T())
//不合法
(T)floorList.get(index)
//合法
floorList.set(new T());
List<? extends T> upperList=new ArrayList();;
List<? super T> floorList=new ArrayList();
//合法
(T)upperList.get(index)
//不合法
upperList.set(new T())
//不合法
(T)floorList.get(index)
//合法
floorList.set(new T());