使用Collection作为参数调用函数

时间:2014-10-14 20:07:12

标签: java collections

我需要调用一个以集合为参数的函数:

public static <T extends Type1> Type2 method(Collection<T> my_collection)

要定义我的集合,由于集合无法实例化,我定义了ArrayList<T> a。我现在试图用一个参数调用这个函数,但是eclipse说我的函数没有为Collection类型定义。然而,我的类型T在方法定义中扩展了Type1。我没有正确地说它吗?

修改

我基本上刚刚创建了一个包含T类型元素的数组:ArrayList<T> a = new ArrayList<T>();我填充并调用了方法。方法中的确切错误是:The method method(ArrayList<T>) is undefined for the type

2 个答案:

答案 0 :(得分:1)

在我的测试中没有问题:

public class Test
{


    static class Type2
    {
    }

    static class Type1
    {

    }

    static class TestT extends Type1
    {

    }


    public static void main(String[] args)
    {
        List<TestT> l = new ArrayList<TestT>();
        Type2 type2 = method(l);
    }

    public static <T extends Type1> Type2 method(Collection<T> my_collection)
    {
        return new Type2();
    }

}

答案 1 :(得分:1)

您的功能适用于以下内容:

ArrayList<Type1> a = new ArrayList<Type1>(); 

或任何扩展Type1的类的集合。

<T extends Type1> Type2 method(Collection<T> my_collection)中 您将使用的<T extends Type1>通用类型T应该扩展Type1类。