为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2019-08-24 18:11:58
在Java中安全地将long转换为intJava中最常用的方法是验证转换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;}
查看完整描述

3 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

使用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包装器,除非你想将它留在原地以便更改功能而不需要进行大量的重构。


查看完整回答
反对 回复 2019-08-24
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

不要:这不是解决方案!

我的第一个方法是:

public int longToInt(long theLongOne) {
  return Long.valueOf(theLongOne).intValue();}

但这只是将long转换为int,可能会创建新Long实例或从Long池中检索它们。


缺点

  1. Long.valueOfLong如果数字不在Long池范围内,则创建一个新实例[-128,127]。

  2. intValue实施确实不外乎:

    return (int)value;

因此,这可以被认为不仅仅是铸造更糟糕longint


查看完整回答
反对 回复 2019-08-24
  • 3 回答
  • 0 关注
  • 4847 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号