我需要调用一个以集合为参数的函数:
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
答案 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
类。