Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用compareTo和instanceOf比较字符串和整数_Java_String_Compareto - Fatal编程技术网

Java 使用compareTo和instanceOf比较字符串和整数

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; }

我有一个代码片段,我无法理解它的确切功能。。 这段代码在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;
        } 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
类型。代码段确保any
Integer
的比较小于any
字符串

Integer
-
Integer
String
-
String
的比较按您预期的方式完成

。。。它到底是干什么的


基本上:字符串大于整数,如果两者都是同一类型,则使用其自然顺序(比较两个字符串或两个整数)。

由于myNumb可以是字符串或整数,因此compareTo正在检查它们首先是什么类型。如果它们不是相同的类型(一个是整数,另一个是字符串),则它们不相等,因此根据需要返回1或-1。如果它们属于同一类型,则将它们强制转换为该类型,并委托给该类型的compareTo。

前两个If子句确保字符串被视为大于整数。第二个if子句将字符串之间和整数之间的比较委托给这些类的
compareTo()
实现,以便它们按常规顺序排列

请注意,使用这种类型的代码,其中变量可以是“类型X或Y”,这是非常非常糟糕的设计-正是因为它迫使您编写这样的代码


相反,选择一种类型,并在必要时转换为该类型。

6个问题,不接受,不投票。。。你认为你是如何激励周围的人来帮助你的?