java中泛型的定义:《? extends T》和《? super T》的作用和区别
2018-03-21 18:00
337 查看
《? extends T》 表示类型的上界,表示参数化类型的可能是T 或是 T的子类;《? super T》 表示类型下界,表示参数化类型是此类型的父类型,直至Object;我的理解是<? extends T>限制了除了null以外的存,可以取如下:public class Genericity {public static void main(String[] args) {List<? extends Object> list = new ArrayList<Object>(); // List<Integer> listson = new ArrayList<Integer>();// listson.add(1);// listson.add(2);// listson.add(3);// list=listson;list.add(null); Object a = list.get(0); System.out.println(list.size()); for (int i =0; i<list.size();i++) {System.out.println(list.get(i));}} }它虽然不能存,但是可以接受定义的类型和其子类的赋值。public class Genericity {public static void main(String[] args) {List<? extends Object> list = new ArrayList<Object>();List<Integer> listson = new ArrayList<Integer>();listson.add(1);listson.add(2);listson.add(3);list=listson;list.add(null);Object a = list.get(0);System.out.println(list.size());for (int i =0; i<list.size();i++) {System.out.println(list.get(i));}}}
4123null<? super T>只能添加定义的类型和其子类,取出来的类型为Object类型;<? super T>设定了其上限类型,且取出时为Object,使元素失去本来该有的类型特征;<? extends T>这种泛型定义方式给我一种类似抽象类的感觉,它就像一个接口,你只能去取,除了定义类型及其子类以外,阻止其他类型的数据去改变它。
相关文章推荐
- 泛型中 ? super T 和 ? extends T 的区别
- Java 泛型中? super T和? extends T的区别
- Java 泛型中? super T和? extends T的区别
- Java 泛型中? super T和? extends T的区别
- Java 泛型中? super T和? extends T的区别
- java中定义常量和C#中定义常量的区别
- 【java】泛型中<? extends E>和<? super E>的区别
- java泛型中?和object的区别
- java作用域public ,private ,protected 及不写时的区别
- java中关键字volatile的作用; volatile vs synchronized的区别
- java作用域public ,private ,protected 及不写时的区别
- java 接口、抽象类的作用和区别
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- Java常量定义需要注意事项及static作用(复习)
- Java中JDK和JRE的区别是什么?它们的作用分别是什么?
- java中list,map使用泛型和不使用的区别
- java中数组定义String a[]和String[] a有什么区别?
- Java接口的作用和抽象类的区别总结
- Java中的泛型类和泛型方法区别和联系
- Java 中 FileReader FileInputStream InputStreamReader BufferedReader之间的区别与作用