在类型转换

时间:2016-09-26 13:05:32

标签: java object compare

我传递的两个值需要作为字符串格式进行比较,但它们的实际类型是不同的。

所以,我调用一个类型转换函数,它将对给定值进行类型转换并返回一个对象。

public object typeCast(columnDataType,columnFormat,columnValue){

       case "(IntegerType)":
         return Integer.parseInt(filterValue);
       case "(LongType)":
         return Long.parseLong(filterValue);    
   }

但是,我无法进行“大于”或“小于”的操作。

a1>a2
  

未定义对象类型。

3 个答案:

答案 0 :(得分:1)

问题1:您无法在引用类型上使用<>运算符。可能的解决方案:使用Comparable<T>.comparteTo(T)方法。

问题2:Object类未实现Comparable。可能的解决方案:返回Comparable<?>

问题3:如果您返回Comparable<?>,则会失去通用类型安全的好处。 (嗯....)

我认为如果我们能看到更多的背景会有所帮助。还有真正的 Java代码(至少)在语法上有效,所以我们不必猜测...

顺便说一句,你正在做的事情(从Java的角度来看)不是类型转换。它实际上是值的转换。对于参考类型,铸造和转换之间的区别是开始。类型转换为您提供与以前相同的对象:转换为您提供了不同的对象。

答案 1 :(得分:0)

这种情况发生了,因为编译器不知道你的情况究竟会发生什么,它将如何发展(如果知道它甚至你还不知道怎么回事?)。

答案 2 :(得分:0)

在返回之前,您可以将解析后的值转换为一个常见类型(例如longdouble)并更改方法的返回类型。

或者使用课程Number并在比较时致电longValue()doubleValue()