java - 当对象类型可用时,为什么需要通配符?

标签 java generics wildcard

当对象可以用作函数定义中的参数时,与无界类型相比可以接受任何对象时,需要通配符吗?

package wildCards;

import java.util.ArrayList;
import java.util.List;

public class NeedForWildCard {
    public void processInput(List<String> values){

    //Insted of List<String> we could have used List<object> and what is the need for wildcard in here?

        for(String valueExtractor:values){
            System.out.println("values="+valueExtractor);
        }
    }
    public static void main(String[] args) {
        ArrayList<Integer> valuesInteger=new ArrayList<>();
        valuesInteger.add(100);
        valuesInteger.add(200);
        valuesInteger.add(300);
        NeedForWildCard example=new NeedForWildCard();
        example.processInput(valuesInteger);//valuesInteger is arguments since it is used in method call.
    }

}

最佳答案

假设您有一个如下方法(带有通配符参数 Object 列表)

public void getList(List<Object> list){
    ... 
}

然后用不同的方法执行以下操作

List<String> strList = new ArrayList<String>();
getList(strList);

第二行将出现编译错误

The method getList(List<Object>) in the type TESTClass is not applicable for the arguments (List<String>)

您不能用完全不同的对象来引用一个对象。

关于java - 当对象类型可用时,为什么需要通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26362135/

相关文章:

java - 我如何从Struts逻辑: iterate tag in variable获取值(value)

java - 用于快速定位包的 Eclipse 热键

c# - 基本类型和继承类型的工作通用列表

c# - 如何在泛型方法中将泛型集合指定为限制

scala - 这种类型参数语法无法编译的原因是什么?

JavaScript .search() 使用正则表达式查找带有通配符的 URL

java - 使用包含小数的数字通配符检查文件夹是否存在

java - 将 byte[] 转换为 BitSet

java - 如何表示参数值在 JUnit 测试中无关紧要?

Java 泛型返回参数化为更具体的两种类型的泛型?