我有一堆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