我传递的两个值需要作为字符串格式进行比较,但它们的实际类型是不同的。
所以,我调用一个类型转换函数,它将对给定值进行类型转换并返回一个对象。
public object typeCast(columnDataType,columnFormat,columnValue){
case "(IntegerType)":
return Integer.parseInt(filterValue);
case "(LongType)":
return Long.parseLong(filterValue);
}
但是,我无法进行“大于”或“小于”的操作。
a1>a2
未定义对象类型。
答案 0 :(得分:1)
问题1:您无法在引用类型上使用<
或>
运算符。可能的解决方案:使用Comparable<T>.comparteTo(T)
方法。
问题2:Object
类未实现Comparable
。可能的解决方案:返回Comparable<?>
。
问题3:如果您返回Comparable<?>
,则会失去通用类型安全的好处。 (嗯....)
我认为如果我们能看到更多的背景会有所帮助。还有真正的 Java代码(至少)在语法上有效,所以我们不必猜测...
顺便说一句,你正在做的事情(从Java的角度来看)不是类型转换。它实际上是值的转换。对于参考类型,铸造和转换之间的区别是开始。类型转换为您提供与以前相同的对象:转换为您提供了不同的对象。
答案 1 :(得分:0)
这种情况发生了,因为编译器不知道你的情况究竟会发生什么,它将如何发展(如果知道它甚至你还不知道怎么回事?)。
答案 2 :(得分:0)
在返回之前,您可以将解析后的值转换为一个常见类型(例如long
或double
)并更改方法的返回类型。
或者使用课程Number
并在比较时致电longValue()
或doubleValue()
。