xszhang911
2015-05-18 14:08
采纳率: 50%
浏览 1.8k
已采纳

关于JAVA中的List接口

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 冥王之锤 2015-05-19 02:18
    已采纳

    java不支持对数组进行强转。
    A[] a2 = (A[]) all.toArray(new A[] {});之所以可以是因为,toArray构建的是A【】,虽然返回的是object[].

    已采纳该答案
    打赏 评论
  • bdmh 2015-05-18 14:13

    你那个a1就别先定数组长度了

    打赏 评论
  • danielinbiti 2015-05-18 14:37
     all.toArray()返回的object[]数组,object是A的父类,父类不能强转成子类
    A[] a2=all.toArray(new A[]{});中toArray传入了类型是A,指定了返回数组的泛型T,所以可以。
    
    public Object[] toArray()
    public <T> T[] toArray(T[] a) {
    
    打赏 评论
  • fanst_ 2015-05-18 15:10
    List all = new ArrayList(); // 这里如果写成List<FST> = new ArrayList<FST>(); 下面toArray的前面就不用强转了。
        all.add(new FST());
        all.add(new FST());
        FST[] a1 = new FST[2];
        a1 = (FST[]) all.toArray(a1);  //  toArray(a1)一定要带参数,即创建长度合适的数组
        FST[] a2 = (FST[])all.toArray(new FST[all.size()]);
    
    打赏 评论
  • threenewbee 2015-05-18 15:34

    Java不支持数组的逆变,你不能对数组强制类型转换,只能再开一个新的数组,然后每个元素转换后放进去。

    打赏 评论
  • skyWalker_ONLY 2015-05-19 02:45

    建议去看一下toArray的API

    打赏 评论

相关推荐 更多相似问题