【问题标题】:typecast list to string using hibernate in java在java中使用hibernate将列表类型转换为字符串
【发布时间】:2013-06-21 08:49:23
【问题描述】:

我尝试将列表数据类型转换为字符串,但它显示错误为 java.lang.ClassCastException: java.lang.String cannot be cast to java.util.List 请帮我解决这个问题。这是使用休眠完成的。

for(int i2=1; i2<=gantttablecolnameList.size(); ++i2)
{
   columnname= (String) ((List)gantttablecolnameList.get(i1)).get(0);
}

此列表包含表格列名。

【问题讨论】:

  • java.lang.String 不能转换为 java.util.Listtrue 。你想达到什么目的?
  • 在您充分了解 Java 数据类型之前,您不应该从 Hibernate 开始。 gantttablecolnameList 是如何声明的?你确定你的循环从1开始吗? (列表索引从 0 开始计数)
  • gantttablecolnameList 被声明为 List gantttablecolnameList=new ArrayList();

标签: java hibernate


【解决方案1】:

如果你的List gantttablecolnameList 真的有String,那么试试这个:

for(int i2=0; i2<gantttablecolnameList.size(); i2++)
{
  columnname= (String) (gantttablecolnameList.get(i2));
}

你正在这样做:

(List)gantttablecolnameList.get(i1)

假设您的 List gantttablecolnameList 包含 StringgantttablecolnameList.get(i1) 会给您一个 Object 这实际上是一个 String 实例,用于由 i1 的运行时值指定的索引。所以,简而言之,你正在尝试这个:

 (List)"someString";

这是不可能的。

【讨论】:

    【解决方案2】:

    试试

     columnname= (String) ((List)gantttablecolnameList).get(0));
    

    (List)gantttablecolnameList.get(i1)) 中,gantttablecolnameList.get(i1) 会给你元素..而不是列表。

    但实际上你必须检查空条件。你现在是NUll PATTERN

    【讨论】:

      【解决方案3】:

      几件事:

      1. 向下转换为List &lt;String&gt;,而不是您现在拥有的原始类型;
      2. 使用增强的 for 循环遍历列表。不要进行基于索引的迭代;
      3. 一旦你处理了上面的问题,你的代码就会简单到足以让错误消失:

         for (String columname : (List<String>) ganttablecolumnlist) ...
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-04
        • 2016-06-04
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        相关资源
        最近更新 更多