You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Servlet中如何使用getAttribute方法将Object转换为Integer?

Servlet中Object转Integer的正确处理方式

问题分析

第一种写法的错误

代码:

String id = req.getSession().getAttribute("user_id").toString();
int user_id=Integer.parseInt(id);

错误原因:getAttribute("user_id")返回了null,此时调用toString()会触发空指针异常,因为null对象无法调用任何方法。

第二种写法的错误

代码:

String id = (String)req.getSession().getAttribute("user_id");
int user_id=Integer.parseInt(id);

错误原因:session中存储的user_id实际是Integer类型,强行将Integer对象向下转型为String,会触发类型转换异常——Integer和String属于不同类型,无法直接强转。

正确解决方案

方案1:先判空,再根据实际类型转换

如果不确定session中存储的是Integer还是String,先做非空判断,再通过instanceof判断类型后转换:

Object userIdObj = req.getSession().getAttribute("user_id");
int user_id = 0; // 设置默认值,避免空值影响后续逻辑
if (userIdObj != null) {
    if (userIdObj instanceof Integer) {
        user_id = (Integer) userIdObj;
    } else if (userIdObj instanceof String) {
        user_id = Integer.parseInt((String) userIdObj);
    }
}

方案2:已知存储类型为Integer时的简化写法

如果确定session中存储的user_id是Integer类型,直接判空后转型:

Integer userIdObj = (Integer) req.getSession().getAttribute("user_id");
int user_id = userIdObj != null ? userIdObj : 0;

额外提示

  • 存储session属性时,尽量保持类型一致,避免后续转换混乱;
  • 处理空值时,一定要先做非null判断,避免空指针异常。

内容的提问来源于stack exchange,提问作者Myron Dsilva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:55:30