Java 使用compareTo和instanceOf比较字符串和整数
我有一个代码片段,我无法理解它的确切功能。。 这段代码在JavaBean中Java 使用compareTo和instanceOf比较字符串和整数,java,string,compareto,Java,String,Compareto,我有一个代码片段,我无法理解它的确切功能。。 这段代码在JavaBean中 private Object myNumb; //then getter and setter for this public int compareTo(myRptObj o){ if (myNumb instanceof String && o.myNumb instanceof Integer) { return_value = 1; }
private Object myNumb;
//then getter and setter for this
public int compareTo(myRptObj o){
if (myNumb instanceof String && o.myNumb instanceof Integer) {
return_value = 1;
} else if (myNumb instanceof Integer && o.myNumb instanceof String) {
return_value = -1;
} else if (myNumb instanceof String && o.myNumb instanceof String) {
return_value = ((String) myNumb).compareTo((String)o.myNumb);
} else if (myNumb instanceof Integer && o.myNumb instanceof Integer) {
return_value = ((Integer) myNumb).compareTo((Integer)o.myNumb);
}
}
我想了解compareTo
以及如何比较字符串和整数?
myNumb
可以是Integer
或String
类型。代码段确保anyInteger
的比较小于any字符串
Integer
-Integer
和String
-String
的比较按您预期的方式完成
。。。它到底是干什么的
基本上:字符串大于整数,如果两者都是同一类型,则使用其自然顺序(比较两个字符串或两个整数)。由于myNumb可以是字符串或整数,因此compareTo正在检查它们首先是什么类型。如果它们不是相同的类型(一个是整数,另一个是字符串),则它们不相等,因此根据需要返回1或-1。如果它们属于同一类型,则将它们强制转换为该类型,并委托给该类型的compareTo。前两个If子句确保字符串被视为大于整数。第二个if子句将字符串之间和整数之间的比较委托给这些类的
compareTo()
实现,以便它们按常规顺序排列
请注意,使用这种类型的代码,其中变量可以是“类型X或Y”,这是非常非常糟糕的设计-正是因为它迫使您编写这样的代码
相反,选择一种类型,并在必要时转换为该类型。6个问题,不接受,不投票。。。你认为你是如何激励周围的人来帮助你的?