簡體   English   中英

Java中的返回類型-長到int強制轉換-IntelliJ抱怨嗎?

[英]Return types in Java - long to int casting - IntelliJ complains?

所以我有這種方法:

在此處輸入圖片說明

那么,為什么IntelliJ警告我那里不允許返回x,但是在上面可以嗎? 類ProjectElement的id也是long類型。

請不要在未實際閱讀的情況下回答問題。 :)

我假設您所說的“就在上面就可以了”是:

return (p1.getId().compareTo(p2.getId());

那不是返回ID(它是Long ),而是返回compareTo方法的結果,它是一個int (請參閱Long.compareTo(Long)文檔 。)

longint沒有隱式轉換,這就是為什么您的return x;語句的原因return x; 是無效的。

在我看來, 所有你需要做的是改變的聲明xint而不是long -你只能從結果填充它compareTo通話,畢竟:

// Removed extraneous brackets as well...
int x = p1.getCustomerUnit().getId().compareTo(p2.getCustomerUnit().getId());
if (x == 0) {
    return p1.getId().compareTo(p2.getId());
}
return x;

區分ID的類型和ID之間的比較結果的類型非常重要。

錯誤是因為, compare()方法聲明返回int ,您正在返回long

ProjectElement的Id變量是Long的類型,而Longcompare()方法返回int

(p1.getId().compareTo(p2.getId())返回int,因為Id的類型為Long ,和長期的compare()方法返回INT

之所以抱怨是返回longint會導致截斷,你把自己一半的位!

如果確實必須執行此操作,則將其強制轉換為: return (int)x; 並為后果做好准備:-)

干杯,

暫無
暫無

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

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