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

(图片来源网络,侵删)
Object 是 Integer(最常见的情况)
Object 是 Integer 类型,可以直接调用 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
Object 是 String
Object 是 String 类型,需要先解析为 Integer,再转换为 int:
Object obj = "456"; int num = Integer.parseInt((String) obj); System.out.println(num); // 输出: 456
注意:如果字符串格式不正确(如 "abc"),会抛出 NumberFormatException。

(图片来源网络,侵删)
Object 是其他数字类型(如 Double, Long)
Object 是 Double、Long 等数字类型,可以先用 Number 类转换,再获取 int 值:
Object obj = 789.0; // 实际是 Double int num = ((Number) obj).intValue(); System.out.println(num); // 输出: 789
Object 是 null
Object 是 null,直接转换会抛出 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 可能是 Integer、String 或其他数字类型,可以使用以下通用方法:

(图片来源网络,侵删)
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
| 场景 | 方法 | 注意事项 |
|---|---|---|
Object 是 Integer |
(Integer) obj |
可能抛出 NullPointerException |
Object 是 String |
Integer.parseInt((String) obj) |
可能抛出 NumberFormatException |
Object 是 Double/Long |
((Number) obj).intValue() |
可能丢失精度(如 9 → 3) |
Object 是 null |
先检查 null |
直接转换会抛出异常 |
| 通用方法 | instanceof + 类型判断 |
需要处理多种情况 |
| 使用第三方库 | NumberUtils.toInt() |
推荐,代码更简洁 |
最佳实践:
- 如果能确定
Object的类型,直接强制转换。 - 如果类型不确定,使用
instanceof检查或第三方库(如 Apache Commons Lang)。 - 始终处理
null和异常情况,避免程序崩溃。
