我在嘗試泛型上/下界的一些示例程序。泛型上界給出了編譯錯誤...但下限是好的。 我只是想把類型T的列表放入一個集合,並嘗試上下限場景。泛型上界通配符給出編譯錯誤
請幫助確定與testUpperBound(T t)方法的問題以及爲什麼testLowerBound(T t)方法編譯並且testUpperBound(T t)沒有。我檢查了其他類似的線程..但我仍然沒有清楚。
請讓我知道是否需要更多的細節。
public class TestGenerics<T>
{
public static void main(String...args)
{
List<String> list = new ArrayList<>();
list.add("New ArrayList");
new TestGenerics<List<String>>().testUpperBound(list);
new TestGenerics<List<String>>().testLowerBound(list);
}
public void testLowerBound(T t)
{
Set<? super ArrayList<T>> lowerBoundSet = new HashSet<>();
lowerBoundSet = new HashSet<List<T>>();
ArrayList<T> list = new ArrayList<>();
list.add(t);
lowerBoundSet.add(list); // compiles..
out.println(lowerBoundSet);
}
public void testUpperBound(T t)
{
Set<? extends List<T>> upperBoundSet = new HashSet<>();
upperBoundSet = new HashSet<List<T>>();
ArrayList<T> list = new ArrayList<>();
list.add(t);
upperBoundSet.add(list); // Doesn't compile..
out.println(upperBoundSet);
}
}
真棒:) ..最後我明白了....感謝大衛..! 。讚賞和接受答案。 –