加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 错误的数据类型 – 泛型

发布时间:2020-12-15 08:48:07 所属栏目:Java 来源:网络整理
导读:在下面的 Java代码中: import java.util.*;public class TestGenericMethod {public static E void ArrayToArrayList(E[] a,ArrayListE lst) { for (E e : a) lst.add(e);}public static void main(String[] args) { ArrayListInteger lst = new ArrayListI
在下面的 Java代码中:

import java.util.*;

public class TestGenericMethod {

public static <E> void ArrayToArrayList(E[] a,ArrayList<E> lst) {
    for (E e : a) lst.add(e);
}

public static void main(String[] args) {
    ArrayList<Integer> lst = new ArrayList<Integer>();
    Integer[] intArray = {55,66};  // autobox
    ArrayToArrayList(intArray,lst);

    for (Integer i : lst) System.out.println(i);    
    String[] strArray = {"one","two","three"};

    //ArrayToArrayList(strArray,lst);   // Compilation Error
}
}

有人可以解释一下编译器是如何知道这一行的:

ArrayToArrayList(strArray,lst);

抛出异常?

如果该方法接受泛型数据,为什么它接受一个I??nteger数组但不接受一个String数组?

解决方法

这不会编译,因为ArrayToArrayList需要一个数组和一个相同类型的数组列表(E):

public static <E> void ArrayToArrayList(E[] a,ArrayList<E> lst) {

您注释掉的示例尝试使用String数组和Integer的ArrayList调用它.

以下编译:

String[] strArray = {"one","three"};
      ArrayList<String> strLst = new ArrayList<String>();
      ArrayToArrayList(strArray,strLst);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读