我在Java中有一堆类,所有的类都实现了一个称为IdObject的接口(interface)(指定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()); }}基本上,我的问题出在第一行上-我想为该类型指定两个“约束”,因为我需要第一个来确保可以在循环中打印ID,第二个要确保可以使用Collections。列表上的sort()。第一行不编译。有没有一种方法可以在不指定没有类型参数且没有使用未经检查的操作的泛型类型的情况下进行这项工作?我也无法在互联网上找到这样的例子。问候 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 List<? extends IdObject & Comparable<?>>恐怕这种类型的multiple bounded type parameters仅在类和方法签名中可用。所以我想您可以得到的最接近的是定义一个接口(interface):public interface MyInterface extends IdObject, Comparable<MyInterface>并像这样声明您的列表:List<? extends MyInterface> objectList = null; (adsbygoogle = window.adsbygoogle || []).push({});
10-08 03:43