为基元布尔类型实现比较器?

2022-09-02 02:48:51

我需要一些类,对于一个类,我想比较原始(不是)值。implements ComparatorbooleanBoolean

如果它是一个Boolean,我会返回0,-1或1。但是我怎么能用基元做到这一点呢?return boolA.compareTo(boolB);


答案 1

您可以查找java.lang.Boolean的实现方式,因为该类自然也使用原始布尔值:

public int compareTo(Boolean b) {
    return (b.value == value ? 0 : (value ? 1 : -1));
}

从Java 7开始,您可以简单地使用内置的静态方法Boolean.compare(a,b)


答案 2

自Java 7以来,Marko Topolnik在他的答案中显示的逻辑已经转移到另一种方法中,以揭示一种比较原始的方法。boolean

Javadoc for Boolean.compare(boolean x, boolean y)

public static int compare(boolean x, boolean y)

Compares two boolean values. The value returned is identical to 
what would be returned by:

    Boolean.valueOf(x).compareTo(Boolean.valueOf(y))

推荐