Java 在compareTo()中使用equals()?

Java 在compareTo()中使用equals()?,java,equals,compareto,Java,Equals,Compareto,测试代码(只是为了遵守,显然有更好的方法来改变您自己的不区分大小写的数据模型) 公共类TestClass实现java.lang.com{ 公共字符串测试; @凌驾 公共整数比较(TestClass o){ 如果(o==null){ 抛出新的NullPointerException(); } 返回等于(o)?0:test.toLowerCase().compareTo(o.test.toLowerCase()); } @凌驾 公共布尔等于(对象o){ return(o==this)?true:o

测试代码(只是为了遵守,显然有更好的方法来改变您自己的不区分大小写的数据模型)

公共类TestClass实现java.lang.com{
公共字符串测试;
@凌驾
公共整数比较(TestClass o){
如果(o==null){
抛出新的NullPointerException();
}
返回等于(o)?0:test.toLowerCase().compareTo(o.test.toLowerCase());
}
@凌驾
公共布尔等于(对象o){
return(o==this)?true:o TestClass的instanceof?test.equalsIgnoreCase(((TestClass)o.test):false;
}
@凌驾
公共int hashCode(){
返回test.toLowerCase().hashCode();
}
}
比如说,我希望我的类实现
Comparable
,遵循API中的“强烈建议”:

强烈建议(x.compareTo(y)==0)=(x.equals(y)),但不是严格要求

那么在
compareTo()中使用
equals()
可以吗?当然,我们要确保
equals()
不会调用
compareTo()
作为回报


类似:

只要在调用compareTo()中的equals()之前进行NPE检查,就应该可以了

还有一点是在做之前

test.toLowerCase().compareTo(o.test.toLowerCase());

您还必须检查test是否为NULL,因为“someString”。compareTo((String)NULL)将抛出NullPointerException。

我是问在compareTo()中使用equals(),而不是讨论何时使用equals()或compareTo()我也没有深入探讨字符串类中equals()和compareTo()的实现,这超出了本文的范围。测试代码实际上只是可视化如何在compareTo()中使用equals()。这没关系,但顺便说一下:不要编写类似
a的东西?对:b?c:错误
。这是
a | | b&&c
的一个模糊表达式。例如
return o==TestClass和test.equalsIgnoreCase(((TestClass)o.test)的这个| | o实例将执行相同的操作。
感谢您的发现!:)当我输入真/假时,我知道有些可疑。。。太棒了。谢谢你发现了!:)
test.toLowerCase().compareTo(o.test.toLowerCase());