0
import java.util.ArrayList;
import java.util.List;
import java.util.Collection;

public class LowerBoundedWildCard {
    public static void display(Collection<? super Integer> ints, int n) {
        for (int i = 0; i < n; i++) {
            ints.add(i);
        }
    }

    public static void main(String[] args) {

        List<Number> numList = new ArrayList<Number>();
        display(numList, 5); // Error
        numList.add(19.43); // Error
        }
   }

List<Integer>比前者List<? super Integer>只匹配 Integer 类型的列表,而后者匹配作为 Integer 超类型的任何类型的列表。Number 是 Integer 和 double 的超类型,那么为什么会出现这个错误?

请帮我解决上述问题。

4

1 回答 1

2

我尝试了代码,没有错误。我什至可以毫无问题地打印列表:

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

public class Test
{
    public static void display(Collection<? super Integer> ints, int n) {
        for (int i = 0; i < n; i++) {
            ints.add(i);
        }
    }

    public static void main(String[] args) {

        List<Number> numList = new ArrayList<Number>();
        display(numList, 5);
        numList.add(19.43);
        System.out.println( "numList = " + numList );
    }

}

输出:

numList = [0, 1, 2, 3, 4, 19.43]
于 2013-06-19T07:01:23.633 回答