我有一个类,它包含不同的类型并实现Iterable<Object>
接口。但是对我来说很重要,我可以比较元素。我知道,我不能写如下内容:Iterable<Object & Comparable<?>>
,那我该怎么办?
我已确保类中包含的每个元素:
不能是null
。
与同类元素相当。
是一成不变的。好吧,至少我正在检查一部分。
不是那样,我只想比较元素,因为我可以这样:
private static int hackCMP(Object val, Object val2)
throws SecurityException, NoSuchMethodException,
IllegalArgumentException, IllegalAccessException,
InvocationTargetException {
Method m = val.getClass().getMethod("compareTo", val.getClass());
return (Integer) m.invoke(val, val2);
}
我想将元素作为输入传递给另一个类的间接构造函数,这也确保元素需要具有可比性。该方法是:
public static <T extends Comparable<?>> Os of(final Iterator<T> values) {
最佳答案
戴夫·科斯塔(Dave Costa)指出,您实际上应该只使用Iterator<Comparable<?>>
而不是使用Object
。您的类型应根据需要确定。如果您有期望使用Comparable<?>
的方法,请使用它。接受对象的方法仍然可以采取任何措施,包括Comparable
s。
关于java - 如何使对象具有可比性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5516502/