For example, it doesn't make sense to compare Colors
这是对的。即使没有意义,你也可以。以下是问题的答案:
Which color is brighter?
public class ComparableColor implements Comparable<ComparableColor>
{
Color color;
public ComparableColor(Color color)
{
this.color = color;
}
@Override
public int compareTo(ComparableColor c)
{
return c.color.getAlpha() - this.color.getAlpha();
}
}
# 1 楼答案
这不是它的工作原理
Comparable
是一个接口,任何类都可以选择实现,以指示可以使用类compareTo()
方法比较类的实例。因此,您可以选择在自己创建的任何类中实现该接口(但是,您必须自己为compareTo()
编写代码,因为Java不知道如何以有意义的方式比较对象)一些内置类实现了
Comparable
,而其他类则没有——可能在某个地方有一个列表,但对于一个如此简单的答案来说,它太长了。如果您想知道某个特定类是否实现了compareTo()
,请查看其文档(并查看比较是否符合您的预期),或者尝试调用该方法。如果存在未实现Comparable
的内置类或第三方类,则需要创建一个Comparator
来进行比较A
Comparator
可以比较你想要的任何东西,因为你是决定它应该如何工作的人# 2 楼答案
实际上,您可以比较Java中的所有内容
例如,您有一个类
X
,这是不可比较的。您可以使这个类成为另一个类C
的属性,并使C
具有可比性,重写它的compareTo()
方法这是对的。即使没有意义,你也可以。以下是问题的答案:
# 3 楼答案
例如,比较Colors是没有意义的,所以这个类没有实现可比较的接口。现在,如果您想要一个没有实现Comparable的所有类的列表,我认为没有