簡體   English   中英

Long.valueOf無法編譯,無法將int轉換為long

[英]Long.valueOf not compiling for converting int to long

看這個問題的答案(鏈接: 如何在Java中從int轉換為Long? ),我使用以下方法將long值(newUpdate,lastUpdate)與int值(間隔)進行比較。

if ((newUpdate - lastUpdate) > Long.valueOf(interval))

我無法編譯。 比較兩種不同類型的正確方法是什么?

更多信息:

[INFO] Trace org.apache.maven.BuildFailureException: Compilation failure [145,51] operator > cannot be applied to long,java.lang.Long

時間間隔是int類型的。

如果interval是一個int ,則只需...

    if ((newUpdate - lastUpdate) > interval) { ...

在這種情況下,沒有充分的理由將interval顯式轉換為long 無論如何,轉換將為您完成。

表達式Long.valueOf(Interval)返回一個java.lang.Long而不是long 如果您需要interval明確轉換為long ,則應將其強制轉換為:

    if ((newUpdate - lastUpdate) > ((long) interval)) {

唯一令我困惑的例子是,為什么在比較longLong時會出現編譯錯誤。 Long 應該自動拆箱,並且應該使用>運算符的longlong版本:參考JLS-15.20.1 ,它表示如果需要,數字關系運算符可以執行拆箱。 唯一的解釋可能是您使用1.4或更早版本的源代碼進行編譯。

Long.valueOf(Interval)包裝對象retuns Long因此>操作者是不適用的。

如果Interval是String類型,則在比較中使用Long.valueOf(Interval).longValue()

如果Intervalint類型,則只需在比較中使用Interval 它將自動升級為long 規格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM