2016-09-26 23 views
0

我傳遞了需要作爲字符串格式進行比較的兩個值,但它們的實際類型不同。在類型轉換後比較對象值

因此,我調用一個類型轉換函數,它將對給定值進行類型轉換並返回一個對象。

public object typeCast(columnDataType,columnFormat,columnValue){ 

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

但是,我無法做到「大於」或「小於」操作。

a1>a2 

不是對象類型定義。

+0

你確實返回一個'Object',你期望什麼?一個「對象」怎麼能比另一個更大? – SomeJavaGuy

回答

0

出現這種情況,因爲編譯器不知道什麼是真正要發生的事,你的情況,它是如何的所有要去(它是如何想知道,即使你不知道,但什麼時候?)。

0

在返回之前,可以將解析的值轉換爲一個常用類型(例如,longdouble),並更改方法的返回類型。

或使用類別Number並在比較時調用longValue()doubleValue()

1

問題1:您不能在引用類型上使用<>運算符。可能的解決方案:使用Comparable<T>.comparteTo(T)方法。

問題2:Object類不執行Comparable。可能的解決方案:返回Comparable<?>

問題3:如果您返回Comparable<?>,您將失去通用型安全性的好處。 (Meh ....)

我認爲如果我們可以看到更多的上下文,這將有所幫助。而且還真正 Java代碼是(至少)語法有效的,使我們不必猜...


順便說一句,你在做什麼(從Java透視圖)是不是類型鑄件。它實際上是的轉換的值。對於參考類型,轉換和轉換之間的區別是開始的。類型轉換爲您提供與之前相同的對象:轉換爲您提供了一個不同的對象。