杰瑞科技汇

Java中Object如何转int?

在 Java 中,将 Object 转换为 int 是一个常见的需求,但需要谨慎处理,因为 Object 可能不是 Integer 或其他可以转换为 int 的类型,以下是几种常见的方法和注意事项:

Java中Object如何转int?-图1
(图片来源网络,侵删)

ObjectInteger(最常见的情况)

ObjectInteger 类型,可以直接调用 intValue() 方法:

Object obj = 123; // 实际是 Integer
int num = ((Integer) obj).intValue();
System.out.println(num); // 输出: 123

或者直接自动拆箱(Java 5+ 支持):

Object obj = 123; // 实际是 Integer
int num = (Integer) obj; // 自动拆箱为 int
System.out.println(num); // 输出: 123

ObjectString

ObjectString 类型,需要先解析为 Integer,再转换为 int

Object obj = "456";
int num = Integer.parseInt((String) obj);
System.out.println(num); // 输出: 456

注意:如果字符串格式不正确(如 "abc"),会抛出 NumberFormatException

Java中Object如何转int?-图2
(图片来源网络,侵删)

Object 是其他数字类型(如 Double, Long

ObjectDoubleLong 等数字类型,可以先用 Number 类转换,再获取 int 值:

Object obj = 789.0; // 实际是 Double
int num = ((Number) obj).intValue();
System.out.println(num); // 输出: 789

Objectnull

Objectnull,直接转换会抛出 NullPointerException,需要先检查:

Object obj = null;
if (obj != null) {
    int num = ((Integer) obj).intValue(); // 抛出 NullPointerException
}

安全处理

Object obj = null;
int num = (obj == null) ? 0 : ((Integer) obj).intValue();
System.out.println(num); // 输出: 0

通用方法(处理多种类型)

Object 可能是 IntegerString 或其他数字类型,可以使用以下通用方法:

Java中Object如何转int?-图3
(图片来源网络,侵删)
public static int toInt(Object obj) {
    if (obj == null) {
        return 0;
    } else if (obj instanceof Integer) {
        return (Integer) obj;
    } else if (obj instanceof String) {
        return Integer.parseInt((String) obj);
    } else if (obj instanceof Number) {
        return ((Number) obj).intValue();
    } else {
        throw new IllegalArgumentException("Cannot convert Object to int: " + obj);
    }
}
// 使用示例
Object obj1 = 123;
Object obj2 = "456";
Object obj3 = 789.0;
Object obj4 = null;
System.out.println(toInt(obj1)); // 123
System.out.println(toInt(obj2)); // 456
System.out.println(toInt(obj3)); // 789
System.out.println(toInt(obj4)); // 0

使用 Apache Commons Lang(推荐)

如果项目中使用了 Apache Commons Lang,可以直接用 NumberUtils

import org.apache.commons.lang3.math.NumberUtils;
Object obj = "123";
int num = NumberUtils.toInt((String) obj, 0); // 如果转换失败,返回默认值 0
System.out.println(num); // 输出: 123

场景 方法 注意事项
ObjectInteger (Integer) obj 可能抛出 NullPointerException
ObjectString Integer.parseInt((String) obj) 可能抛出 NumberFormatException
ObjectDouble/Long ((Number) obj).intValue() 可能丢失精度(如 93
Objectnull 先检查 null 直接转换会抛出异常
通用方法 instanceof + 类型判断 需要处理多种情况
使用第三方库 NumberUtils.toInt() 推荐,代码更简洁

最佳实践

  1. 如果能确定 Object 的类型,直接强制转换。
  2. 如果类型不确定,使用 instanceof 检查或第三方库(如 Apache Commons Lang)。
  3. 始终处理 null 和异常情况,避免程序崩溃。
分享:
扫描分享到社交APP
上一篇
下一篇