Почему нельзя Java преобразует ArrayList > в List >?

Я пытаюсь сделать что-то, что кажется довольно простым: суммировать размеры списка наборов. Netbeans выдает следующее предупреждение / ошибку:

actual argument java.util.ArrayList<java.util.TreeSet<java.lang.Integer>> cannot be    converted to java.util.List<java.util.Set<java.lang.Object>> by method invocation conversion

для следующих двух частей кода:

/**
 * Sums the sizes of all sets in a list.  Note that while there will be
 * no duplicate elements in a single set, "sister" sets may contain
 * elements, so the value returned is **not** equal to the number of unique
 * elements in all sets.
 * @param list, a List of Sets
 * @return the number of elements contained in all sets
 */
public static int sizeOfListOfSets(List<Set<Object>> list) {
    int size = 0;

    for (Set<Object> set : list) {
        size += set.size();
    }

    return size;
}

, а затем вызывает его со следующим:

    ArrayList<TreeSet<Integer>> testList = new ArrayList<TreeSet<Integer>>();
    TreeSet<Integer>            testSet;
    int                         size = 0;

    testSet = new TreeSet<Integer>();
    testSet.add(new Integer(++size));
    testSet.add(new Integer(++size));
    testList.add(testSet);
    testSet = new TreeSet<Integer>();
    testSet.add(new Integer(++size));
    testList.add(testSet);

    int expResult = size;
    int result    = Helpers.sizeOfListOfSets(testList);

последняя строка дает ошибку компиляции:

error: method sizeOfListOfSets in class Helpers cannot be applied to given types;
1 error

Итак, почему нельзя java.lang.Integer преобразовать в java.lang.Object?

5
задан MrDrews 8 August 2011 в 16:49
поделиться