【发布时间】:2018-01-30 22:37:41
【问题描述】:
您好,我收到此错误:
java.lang.ClassCastException: java.lang.String 无法转换为 java.lang.Integer
在这行代码:
int est;
est=(Integer) session.getAttribute("estado");
我认为问题在于“estado”尚未填充。我使用这个会话属性来查看会话是否已经登录,因此它不需要再次登录。
【问题讨论】:
您好,我收到此错误:
java.lang.ClassCastException: java.lang.String 无法转换为 java.lang.Integer
在这行代码:
int est;
est=(Integer) session.getAttribute("estado");
我认为问题在于“estado”尚未填充。我使用这个会话属性来查看会话是否已经登录,因此它不需要再次登录。
【问题讨论】:
您不能在此处进行类型转换,因为 Integer 与 String 不兼容。
使用Integer#parseInt 将其解析为int
est = Integer.parseInt(session.getAttribute("estado"));
【讨论】:
session.getAttribute("estado");返回estado中保存的会话属性,这里发生了什么,JVM发现(在运行时)返回值的类型是String所以当你尝试将它转换为Integer时解雇了ClassCastException
您需要在这里使用Integer.parseInt(session.getAttribute("estado")); 解析属性estado 返回的结果,这在答案中有所建议
注意:您可能会质疑您已向该属性添加了一个整数(不是
String),但请仔细跟踪您的代码,考虑到request.getParameter("attrName")返回一个String,这只是一个假设
【讨论】:
使用 Integer.parseInt
int est= Integer.parseInt(session.getAttribute("estado").toString());
【讨论】: