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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |