java - 为什么 List<String> 接受另一个 <List> 作为元素

标签 java generics

import java.lang.Math;
import java.util.*;
import java.io.*;


class Hello {


    public static void main(String args[]) throws FileNotFoundException{

        String[] veri2 = {"No", "Compilation", "Error"};

        List<String> veri1 = new ArrayList<String>();
        veri1.addAll(Arrays.asList(veri2)); // ---------- 14
        System.out.println(veri1+"elements in hashset");

    } 

}

当将一个 List 添加到另一个元素类型为 String 的 List 时,为什么上面的代码在第 14 行不会抛出编译错误?

最佳答案

List<E>.addAll 方法接受 Collection<? extends E> ,以及 List<E>接口(interface)继承自Collection<E> .

如果您尝试添加 String使用addAll ,你实际上会得到一个错误。

List<String> list = new ArrayList<String>();
list.addAll("Hello");

上面的代码不起作用,因为 String不实现Collection<String> .

关于java - 为什么 List<String> 接受另一个 <List> 作为元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966317/

相关文章:

java - java支持泛型方法支持各种参数输入吗?

java - 在java中指定持续时间

java - 如何使用java 8按 'name'对对象进行分组?

java - 如何从 Android 中每个动态创建的 EditText 获取数据?

java - 如何在没有另一个数组的情况下制作一个数组?

Java:不同的泛型类型声明和实例

c# - 与通用类型 Nhibernate 合并

java - <T> 如何处理字符串和整数

java - 通过复制到 webapps 手动部署 Tomcat 应用程序

java - 自界泛型