[英]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)) {
唯一令我困惑的例子是,為什么在比較long
和Long
時會出現編譯錯誤。 Long
應該自動拆箱,並且應該使用>
運算符的long
, long
版本:參考JLS-15.20.1 ,它表示如果需要,數字關系運算符可以執行拆箱。 唯一的解釋可能是您使用1.4或更早版本的源代碼進行編譯。
Long.valueOf(Interval)
包裝對象retuns Long
因此>
操作者是不適用的。
如果Interval
是String類型,則在比較中使用Long.valueOf(Interval).longValue()
。
如果Interval
是int
類型,則只需在比較中使用Interval
。 它將自動升級為long
規格 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.