[英]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.