java 数组之间的强转报错

来源:互联网 发布:岂其取之易而守之难乎 编辑:程序博客网 时间:2024/05/22 15:54


  1. Object[] obj = {"t1","t2"};  
  2. String[] str1   = (String[])obj;  
  3. 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[]类型,上面强转的第一条符合。

0 0
原创粉丝点击