泛型与数组
来源:互联网 发布:中国战争电影 知乎 编辑:程序博客网 时间:2024/05/11 12:51
1. 不能创建持有泛型的数组对象。
2. 不能创建泛型类型的数组 : 擦除类型,转换为Object[]
测试代码:
package array;import java.lang.reflect.Array;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class ArrayOfGeneric {@SuppressWarnings("unchecked")public static void main(String[] args) {List<String>[] ls;//ls = new List<String>[10]; //Cannot create a generic array of List<String>List[] list = new List[10];//不可以定义,但是可以类型转换ls = (List<String>[])list; //@SuppressWarnings("unchecked")Object[] objs = ls; objs[0] = new ArrayList<String>();String[] strs;try {//编译通过,运行时报异常strs = arrayOfGenericType(10); //java.lang.ClassCastException:} catch(Exception e) {System.out.println(e);}//此处运行正常strs = arrayOfGenericType(String.class, 4);System.out.println(Arrays.toString(strs));}@SuppressWarnings("unchecked")public static <T> T[] arrayOfGenericType(int s) {//此处必须强制转型,实际创建的是Object类型的数组return (T[]) new Object[s]; //@SuppressWarnings("unchecked")}@SuppressWarnings("unchecked")public static <T> T[] arrayOfGenericType(Class<T> kind, int s) {//此处必须强制转型,实际创建的是kind类型的数组return (T[]) Array.newInstance(kind, s); //@SuppressWarnings("unchecked")}}
//outputjava.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;[null, null, null, null]
4 0
- 泛型与数组
- 泛型与数组
- 泛型与数组
- 泛型列表与数组
- Java数组与泛型
- 数组、集合与泛型
- Java数组与泛型
- List、数组与泛型知识点
- C#之数组、集合与泛型
- JAVA中List数组与泛型
- 泛型数组与集合的转换
- 《Java编程思想》数组与泛型
- Java 泛型总结(二):泛型与数组
- <转>根据泛型生成数组 与数组 List相互转换的方法
- 【C#】数组、集合、泛型集合的区别与联系
- java中数组与泛型的自我理解
- 数组与集合 -- 数组
- 数组与数组队列
- curl类,可用于模拟get,post和curl下载
- iOS7 中 boundingRectWithSize:options:attributes:context:计算尺寸的使用
- hadoop 控制map任务数详解
- 同步、异步、多线程与事件型综述
- windows查询命令
- 泛型与数组
- Populating Next Right Pointers in Each Node
- Web 通信 之 长连接、长轮询(long polling)
- 英语语法入门基础篇
- windows用远程桌面连接访问ubuntu
- 论go语言中goroutine的使用
- __block typeof 编译错误解决
- 转 C#操作Excel(2)-- 打开-读取Excel文档
- 黑马程序员-----IO之打印流