我在java中有一堆类,它们都实现了一个名为IdObject的接口(指定了一个getId()方法).而且,它们都将自己的Comparable <>实现为类型参数,因此它们都可以与自己相媲美.
我想要做的是声明这些对象的列表,填充它,然后对它进行排序并在它们上调用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());
}
}
Run Code Online (Sandbox Code Playgroud)
基本上我的问题在于第一行 - 我想为类型指定两个"约束",因为我需要第一个确保我可以在循环中打印ID而第二个确保我可以使用集合.列表中的sort().
第一行不编译.
有没有办法使这项工作没有指定没有类型参数和使用未经检查的操作的泛型类型?我也无法在互联网上找到这样的例子.
问候