Java中最常用的方法是什么来验证从long转换为int不丢失任何信息?
这是我当前的实现:
public static int safeLongToInt(long l) {
int i = (int)l;
if ((long)i != l) {
throw new IllegalArgumentException(l + " cannot be cast to int without changing its value.");
}
return i;
}
使用谷歌Guava的int类,您的方法可以更改为:
public static int safeLongToInt(long l) {
return Ints.checkedCast(l);
}
从链接的文档:
checkedCast
checkedCast(长值)
如果可能,返回等于value的int值。
参数:
Value - int类型范围内的任何值
返回:
等于value的int值
抛出:
IllegalArgumentException -如果value大于Integer。MAX_VALUE或小于Integer。MIN_VALUE
顺便说一句,您不需要safeLongToInt包装器,除非您想保留它,以便在不进行大量重构的情况下更改功能。
使用谷歌Guava的int类,您的方法可以更改为:
public static int safeLongToInt(long l) {
return Ints.checkedCast(l);
}
从链接的文档:
checkedCast
checkedCast(长值)
如果可能,返回等于value的int值。
参数:
Value - int类型范围内的任何值
返回:
等于value的int值
抛出:
IllegalArgumentException -如果value大于Integer。MAX_VALUE或小于Integer。MIN_VALUE
顺便说一句,您不需要safeLongToInt包装器,除非您想保留它,以便在不进行大量重构的情况下更改功能。