[英]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)
文檔 。)
從long
到int
沒有隱式轉換,這就是為什么您的return x;
語句的原因return x;
是無效的。
在我看來, 所有你需要做的是改變的聲明x
是int
而不是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之間的比較結果的類型非常重要。
之所以抱怨是返回long
為int
會導致截斷,你把自己一半的位!
如果確實必須執行此操作,則將其強制轉換為: return (int)x;
並為后果做好准備:-)
干杯,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.