- Object[] obj = {"t1","t2"};
- String[] str1 = (String[])obj;
- System.out.println(str1.length);
这段代码是报错的,以下分析原因:
1. 数组也是有类型的,取决于初始化时候的类型, 是Object[]类型。
2. 可以强转的前提: 父类指向的是子类的实际对象。
鉴于上面的两种情况,obj指向的是实际的object []对象,所以不能转化为String[]对象。
下面的代码就可以:
Object[] obj = new String[]{"测试","测试2"};
String[] str = (String[])obj;
这段代码就是能够编译成功的,是可以通过的,分析如下:
1. 上面obj在初始化的时候,赋予了类型,就是String[]类型。
2. obj指向的类型是String[]类型,上面强转的第一条符合。