最早的代码是这样的。
Map mInfo = (Map)tempSession.get("mInfo");
在JDK1.5下有警告,说不能用raw type 应该用 generic type后来代码改成
Map<String,Object> mInfo = (Map<String,Object>)tempSession.get("mInfo");
结果还是有警告:Uchecked cast from Object to Map请问怎么改才能没有警告出现啊?客户要求没有警告,也不能屏蔽警告。

解决方案 »

  1.   

    tempSession是什么类型啊? 
      

  2.   

    tempSession是什么类型啊? 
    =====================
    HttpSession
      

  3.   

    1 1.5 就是这样,他默认需要你指定Map的内部对象类型,所以第一个有警告
    2 session.get(); 肯定返回Object类型,这个是没有泛型的,你把它强制转化为带泛型的,也会警告你,转化可能有问题。
      

  4.   

    没有任何办法,机理如此! 
    其实你可以想一下, 为了通用,你指定Object都可以存入
    那个你怎么保证取出来的肯定是Map<String,Object>呢? 这个警告正好是一个提示。我认为需要!
      

  5.   

    get地返回值就是object,只能直接cast了
      

  6.   

    jdk1.5以上在方法前加入标注@SuppressWarnings(value = {"unchecked"})则警告消去
      

  7.   

    建议重写 tempSession.get("mInfo"); 
      

  8.   

    简单,换JDK 1.4啦!如果客户不允许,那就和客户一起,状告SUN,就OK了! 谁让他弄了这么XX的东西,害得我们做不成生意! 告他!我精神上支持你和你的客户,申请法院判距SUN取消1.5的泛型警告,同时取消你们客户不满意的所有特性!
      

  9.   

    建议重写   tempSession.get("mInfo");  
    ======================================== 
    从session里拿对象总会发生类型转换的问题。如何重写呢,就算用Hashtable等,都没发避免类型转换啊.
      

  10.   

    说点有用的吧!客户要求没有警告是正常的,我如果不懂,我也不允许开发商交付的程序有n多个警告信息。如果你的客户是IT人士,熟悉JAVA,他不会提出这个要求,因为那是语言特性。
    既然他不熟悉,骗他还不简单吗!你把有关的东西封装成一个.jar包,专门来屏蔽这种警告的,然后你就说这是一个网上的一个常用工具包就行了,不告诉他,他也不知道。
    反正他也不懂。
    内行骗外行还不简单。
      

  11.   

    客户肯定是懂java的,但是水平大概比我好不了多少,1.5的JDK估计还没搞过,所以让我们这里先调查,如果确实无法去掉的话,直接跟他说无法实现就行了,就怕我这里没搞出来,客户那边搞好了,这就麻烦了。
      

  12.   

    这么讲吧! request,session 都是不支持泛型的,里面拿出来的都是 Object, 你必须强制转换,而任何非泛型转化为泛型,都会有警告!
    这是泛型的优点,而不是缺点。
      

  13.   

    楼主你放心的搞吧,我不相信你那客户真能不屏蔽的处理这个警告....老竹子的办法很H很BL,特别是当你那jar包混在一大堆普通包里的时候.
      

  14.   

    很简单,你只要把这个泛型封装到一个类里面,作为一个类的属性就可以了。SESSION里面放这个类的对象,通过这个对象取得这个泛型对象。只是多了一步操作罢了。如:
    class A{
    public List<String> l;
    public A(List<String> l){
        this.l = l;
    }
    }
    这时,你再如下处理就不会有警告了 List<String> myList = new ArrayList<String>();
    A test = new A(myList);
    request.getSession().setAttribute("test", test); A test1 = (A)request.getSession().getAttribute("test");
    List<String> myList2 = test1.l;
    这样警告信息就被拿掉了。