类型通配符的那点小事儿
来源:互联网 发布:fukase知乎 编辑:程序博客网 时间:2024/04/30 02:15
类型通配符的表示方式:问号? 如:
List<?> list=new ArrayList();是表示未知类型的List ,她是任何类型的List的父类,如下面的强制类型转换是正确的:
List<String> list1=(List<String>)list;
list.add("hello");//是错误的,因为list是未知类型,所以只能加入null;
list1.add("hello");//是正确的,因为list1是String类型
public static void test(List<?> c)//或者参数是List<? Object>也是错误的,因为同样不知道c的类型
{
for(int i=0;i<c.size();i++)
{
System.out.println(c.get(0));
}
// c.add("www");//是错误的,因为编译时不知道c是什么类型,所以编译错误
}
请注意了:List<Object >不是List<String>的子类,不要以为Object 是String的之类,就张冠李戴的因为List<Object >是List<String>的子类,泛型之间的父子类只能通过含通配符"?"来表示的。
如有:class Cat extends Animal class Dog extends Animal 则泛型的父子类之间的关系是:List<? exnteds Animal>是List<Cat> 和List<Dog>的子类 :List<? exnteds Animal是通配符的上限表示法,也就是:List<? exnteds Animal>是所有Animal之子类集合列表List的子类,通配符的超类表示法List<? super Cat>是Cat 的父类集合
泛型的擦除 如 class Apple<T extends Number>
Apple<Integer>a =new Apple<6>;
Apple b=a;
则b里保存的类型信息丢失,即b里保存的类型信息是Number,而不是Integer
- 类型通配符的那点小事儿
- String的那点小事儿
- String的那点小事儿
- Ps那点小事儿
- VSS的那点事儿
- 就业的那点事儿
- 程序员的那点事儿
- Copy的那点事儿~
- String 的那点事儿
- RecyclerView的那点事儿
- CardView的那点事儿
- SurfaceView的那点事儿
- OC 的那点事儿
- C 的那点事儿
- 预处理的那点事儿
- 工作的那点事儿
- 加班的那点事儿
- BeanUtils#copyProperties那点小事儿
- MySQL 5.1参考手册 :: 13. SQL语句语法
- 详解UCOS中的任务调度机制
- 2014.4.21 福州 晴 离京第一次面试(某天) 失败啊
- Discuz!X3.1笔记之二: 本地服务器还是空间虚拟服务器?
- 两个栈实现队列
- 类型通配符的那点小事儿
- 【工具】Intellij IDEA 13 注册机
- AnimatedTransitionGallery
- 反编译apk文件,得到其源代码的方法!!
- 第3周作业1
- csr1011学习
- 保持长宽比 对背景图像进行修改android:scaleType="fitXY"
- iptables restart后不会重载sysctrl.conf的配置,需要代表性iptables-config文件
- JAVASCRIPT 利用浏览器进行GBK编码