getServletContext().getAttribute() 的类型转换问题

qwercv 2013-07-11 09:33:41
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<html>
<head><title>Java Web</title></head>
<body>
<center>
<%
String aname=null;
String avalue=null;
Enumeration enu = this.getServletContext().getAttributeNames();
while(enu.hasMoreElements())
{
aname = (String)enu.nextElement();
avalue=(String)getServletContext().getAttribute(aname);
%>
<%=aname%>-----><%=avalue%><br>
<%
}
%>
</center>
</body>
</html>

第14行 java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
getAttribute()返回的是Object类型,将其转换为String然后赋给一个String类型的value为什么会报错呢?
如果不转换不赋值,直接输出 <%=getServletContext().getAttribute(aname)%> 却可以,为什么啊?

...全文
414 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
frank6666 2013-09-28
  • 打赏
  • 举报
回复
同样的问题也是强制类型转换不行,toString就可以,不明白
  • 打赏
  • 举报
回复
toString()就完事了,照着麻烦
菖蒲老先生 2013-07-11
  • 打赏
  • 举报
回复
getAttribute的返回值是Object型是没错, 所以才要你强转啊,难道你没有setAttribute的地方么? set什么类型就强转成什么类型。。。。
qwercv 2013-07-11
  • 打赏
  • 举报
回复
引用 1 楼 flagiris 的回复:
关键看你怎么set的了, 看你的错误信息好像应该是List<String>, 试试 avalue=((List<String>)getServletContext().getAttribute(aname)).get(0); 呢。。。
但是getAttribute()返回的是Object类型而不是Object[] ,所以为什么要用(List<String>呢?我试了,你的这个方法也不行。其实这个程序就是输出Application的Attrubute。
菖蒲老先生 2013-07-11
  • 打赏
  • 举报
回复
关键看你怎么set的了, 看你的错误信息好像应该是List<String>, 试试 avalue=((List<String>)getServletContext().getAttribute(aname)).get(0); 呢。。。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧