我有一个类,它包含不同的类型并实现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/

10-17 02:13