【问题标题】:Getting cannot convert object to ArrayList error when retrieving ArrayList from HttpSession从 HttpSession 检索 ArrayList 时无法将对象转换为 ArrayList 错误
【发布时间】:2017-11-03 14:12:35
【问题描述】:

我已将 ArrayList 保存到会话对象。我正在尝试使用

检索它
sriList = session.getAttribute("scannedMatches");

我收到编译时错误“无法从 Object 转换为 ArrayList”。如何从会话对象中取回我的 ArrayList。

【问题讨论】:

    标签: java servlets casting httpsession


    【解决方案1】:

    HttpSession#getAttribute() 方法返回java.lang.Object

    public java.lang.Object getAttribute(java.lang.String name)
    

    您是否尝试转换返回的对象?

    sriList = (ArrayList)session.getAttribute("scannedMatches");
    

    【讨论】:

    • +1 The HttpSession#getAttribute() method returns java.lang.Object:
    • 谢谢 - 通常我的 IDE 会在有意义的时候推荐强制转换,所以我认为这里一定有一些不同。
    • 这是我们变得依赖 IDE 的标志吗?我记得我在记事本中使用命令行 javac 编写了我的第一个应用程序...我第一个没有自动完成功能的 BIG 程序...
    • 在记事本中!!你在说什么 Zoid。
    【解决方案2】:

    你必须投射它。

    sriList = (ArrayList)session.getAttribute("scannedMatches");
    

    【讨论】:

      【解决方案3】:

      试试这个:

      Object scannedMatchesObj = session.getAttribute("scannedMatches");
      if ( scannedmatchesObj instanceOf List ){
          sriList = (ArrayList)scannedMatchesObj;
          //Do your stuff...
      }
      

      【讨论】:

      • 只是因为 (scannedmatchesObj instanceof List) 是真的,并不一定意味着它是一个 ArrayList。根据具体情况,在这里将 sriList 声明为 List 并进行相应的转换可能是一个更好的主意。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 2012-08-22
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 2013-10-16
      相关资源
      最近更新 更多