猿问

在Java中安全地将long转换为int

在Java中安全地将long转换为int

Java中最常用的方法是验证转换longint不会丢失任何信息?

这是我目前的实施:

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;}


ITMISS
浏览 4848回答 3
3回答

开心每一天1111

使用Google Guava的Ints类,您的方法可以更改为:public static int safeLongToInt(long l) {     return Ints.checkedCast(l);}来自链接的文档:checkedCast时public static int checkedCast(long value)value如果可能,返回等于的int值。参数: value - int类型范围内的任何值返回:int等于 的值value抛出: IllegalArgumentException - 如果value大于Integer.MAX_VALUE或小于Integer.MIN_VALUE顺便说一下,你不需要safeLongToInt包装器,除非你想将它留在原地以便更改功能而不需要进行大量的重构。

宝慕林4294392

不要:这不是解决方案!我的第一个方法是:public int longToInt(long theLongOne) {   return Long.valueOf(theLongOne).intValue();}但这只是将long转换为int,可能会创建新Long实例或从Long池中检索它们。缺点Long.valueOfLong如果数字不在Long池范围内,则创建一个新实例[-128,127]。该intValue实施确实不外乎:return (int)value;因此,这可以被认为不仅仅是铸造更糟糕long来int。
随时随地看视频慕课网APP

相关分类

Java
我要回答