在下面的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
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下编译器是如何知道这一行的:
ArrayToArrayList(strArray, lst);
Run Code Online (Sandbox Code Playgroud)
抛出异常?
如果该方法接受泛型数据,为什么它接受一个Integer数组但不接受一个String数组?
这不会编译,因为ArrayToArrayList需要一个相同类型E的数组和数组列表():
public static <E> void ArrayToArrayList(E[] a, ArrayList<E> lst) {
Run Code Online (Sandbox Code Playgroud)
您注释掉的示例尝试用数组来调用它String和ArrayList的Integer.
以下编译:
String[] strArray = {"one", "two", "three"};
ArrayList<String> strLst = new ArrayList<String>();
ArrayToArrayList(strArray, strLst);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |