当对象类型可用时,WildCard需要什么?

时间:2014-10-14 13:31:11

标签: 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.
    }

}

1 个答案:

答案 0 :(得分:3)

假设你有一个方法如下(带有通配符参数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>)

您无法使用完全不同的对象引用对象。