- import java.util.*;
- public class Demo {
- public static void main(String[] args) {
- List<String>[] isa = new ArrayList[10]; // 创建一个List<String>数组
- for(List<String> s : isa)
- System.out.println(s); // 输出验证,每个List<String>都为null
- /* 向上转型,导出类转型成基类
- * 向上转型一句话总结“新类是现有类的一种类型”
- * 专有类转型成通用类,会保留导出类的实现逻辑
- * List<Integer> li = new ArrayList<Integer>();也是一种向上转型
- */
- Object[] oa = (Object[]) isa; // 向上转型,java中,引用数据类型都是object的导出类
- List<Integer> li = new ArrayList<Integer>();
- li.add(new Integer(3));
- oa[0] = li;
- /*以上代码,把new Integer(3)添加到List<Integer>的li中,
- * 再把li赋值给oa[0],但是li中数据是Integer,oa[0]是List<String>,数据是String
- * Integer不能赋值给String,所以会出现ClassCastException类转换异常
- */
- String s = isa[0].get(0);
- }
- }
复制代码 |