gpt4 book ai didi

java - 如何使对象具有可比性

转载 作者:行者123 更新时间:2023-11-29 06:14:45 30 4
gpt4 key购买 nike

我有一个包含不同类型和实现的类 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秒。

关于java - 如何使对象具有可比性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5516502/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com