Java 国际化规则。说要换
s1.compareTo(s)==0
和
Collator.compare(s1,s2)<0
为什么<0
?
基于Javadoc,这是一个错字 - 应该是==
:
返回一个整数值。如果源小于目标,则值小于零,如果源和目标相等,则值为零,如果源大于目标,则值大于零。
这是为了String
重载Collator.compare
(因为链接的示例比较了String
s),但该方法的一般版本的行为方式相同。
您引用的文章间接链接到Java 教程的相应页面,该页面描述的行为与上述一致。
当我看到下一点时,我不确定您是否应该依赖此站点...它创建了一个始终返回 0 的整理器。
package com.rule;
public class Do_not_use_String_compareToIgnoreCase_correction
{
public void method()
{
new MyCollator().compare("String", "String"); // CORRECTION
}
class MyCollator extends java.text.Collator
{
public int compare(String source, String target)
{
return 0;
}
public java.text.CollationKey getCollationKey(String source)
{
return null;
}
public int hashCode()
{
return 0;
}
}
}