类型转换错误

转自http://www.myexception.cn/j2ee/821313.html

大神,请进。诡异的类型转换异常。

各位大牛,来看看看这个异常吧。

代码背景:
这是两个项目的整合,在A项目中用session set了一个对象,然后将其封装到一个servletContext中,代码如下:
Java code
HttpSession session = request.getSession(true);
        session.setAttribute(Constant.USER_SESSION, user);
        ServletContext context=session.getServletContext();
        context.setAttribute("session", session);


然后在B项目中获取这个user对象,代码如下:
Java code
HttpSession session=request.getSession();
        ServletContext Context=session.getServletContext();
        ServletContext Context1=Context.getContext("/A");
        if(Context1 !=null && !Context1.equals("")){    
            HttpSession sess =(HttpSession)Context1.getAttribute("session");
            User user=(User)sess.getAttribute(Constant.USER_SESSION);
            if(user!=null)
                System.out.println("username:--------"+user.getUserName());
        }

然后抛出一个类型转换异常:
Java code
java.lang.ClassCastException: com.nodoor.vo.User cannot be cast to com.nodoor.vo.User

我这样测试了下:System.out.println(sess.getAttribute(Constant.USER_SESSION) instanceof User)
结果竟然是false....求解。。。。
诡异的异常。纠结我一天了。。求解脱。


------解决方案--------------------
不是一个user
------解决方案--------------------
User在另外一个项目中使用时,包名 也必须跟session中存的那个 User一样,否则也会被认为两个User是不同的对象。
------解决方案--------------------

不同的ServletContext的实例也是不同的....建议楼主将传对象改为传基本类型数组,过来再封装对象。



解决方法:

1.进行类型转换的时候 先用instansof 来判断当前对象是否是你想要的类型 这样就会避免出错啦

2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值