现在我创建了一个类,如下所示:
class Test <T extends Number & List<String>>
{
T i;
T k;
public void show(){
System.out.println(i);
}
}
我想创建一个Test类的对象,但是我遇到了所有可能组合的错误。下面是我尝试创建Test类对象并且失败可怕的主要类。请帮忙。
public class CollectionsDemo {
public static void main(String[] args) {
Test<ArrayList<Integer>> t = new Test<ArrayList<Integer>>();
}
}
每次编译器抛出以下错误:
Bound mismatch: The type ArrayList<Integer> is not a valid substitute for the bounded parameter <T extends Number & List<String>> of the type Test<T>
答案 0 :(得分:1)
这堂课:
class Test <T extends Number & List<String>>
只有一个类型参数:T
。 Number
和List<String>
是类型范围。用简单的英语读取:class Test适用于任何类型T
,它们都扩展Number
并实现List<String>
。 ArrayList<Integer>
既不是List
Strings
也不是Number
。
要实例化Test
,您需要一个类:
class ListNumber extends Number implements List<String>
这是一个奇怪的课程。它看起来并不像你想要的那样。也许你只想要&#34;列出包含数字&#34;:Test <List<T extends Number>>
?或者,&#34;列出和数字&#34;:Test <T extends List<String>, V extends Number>
。