我有一堆java中的所有類實現了一個名爲IdObject的接口(指定一個getId()方法)。而且,它們全都實現了可比較的類型參數,所以它們都可以與它們自己相媲美。Java:聲明變量具有多個通用的「約束」
我想要做的是聲明這些對象的列表,填充它,然後對它們進行排序並對它們調用getId()。所以,我的代碼如下所示:
List<? extends IdObject & Comparable<?>> objectList = null;
if (foo) {
objectList = new ArrayList<TypeA>();
...
} else if (bar) {
objectList = new ArrayList<TypeB>();
...
}
if (objectList != null) {
Collections.sort(objectList);
for (IdObject o : objectList) {
System.out.println(o.getId());
}
}
基本上我的問題就出在第一線 - 我想指定兩個「限制」的類型,因爲我需要的第一個,以確保我可以打印ID中循環和第二個,以確保我可以在列表上使用Collections.sort()。
第一行不編譯。
有沒有辦法使這項工作沒有指定沒有類型參數和使用未經檢查的操作的泛型?我在互聯網上也找不到這樣的例子。
問候
警告:您的CompIdObject未聲明爲通用。 – Nicolas 2011-02-01 10:12:44