java - 尝试与 startwith 匹配时类强制转换异常

标签 java

我试图匹配文件前缀是否与我的对象匹配,但我遇到了类转换异常

 for (int i=0;i<files.length;i++)
        {
            File f= files[i];
            String s=listeClients.get(i).getShortname();
            if(f.getName().startsWith(s))
            {
            System.out.println("file: " + f.getName());
            }
        }

我将一个字符串传递到 startwith 方法中,所以我不明白为什么会出现此错误:

Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to com.dev.pojo.Clients

非常感谢

最佳答案

问题显然是 listeClients 声明List<com.dev.pojo.Clients> ,但在运行时它实际上包含一个 java.lang.Boolean 。由于泛型的实现方式(称为 "erasure" ),JVM 无法真正检测到这一点,直到它到达

listeClients.get(i)

它实现为

((com.dev.pojo.Clients)(listeClients.get(i))

结果是ClassCastException .

您需要找到并修复插入 java.lang.Boolean 的代码进入这个列表;并且您可能需要更多地关注编译器警告,因为您的编译器可能会通过有关未经检查的强制转换的警告消息警告您这种可能性。

(此外,正如其他人指出的那样,您需要删除 if 条件后面的分号。但这不是您发布的异常的来源,因为它发生在该行之前。)

关于java - 尝试与 startwith 匹配时类强制转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15453748/

相关文章:

java - 如何在项目中集成spring boot

java - 使用 android Facebook API(版本 3.0+)更新我的 Facebook 状态

java - Tomcat - JRE_HOME 环境未正确定义

java - 编译 Java/Scala 混合项目和 Lombok 时出错

java - 如何获得数组中整数的最大频率?

java - 如何从其他类型创建新的Arraylist

java - 使用 Maven 构建 hadoop 错误 : maven-javadoc-plugin

java - 如何在 Java 项目中包含 SIGAR API

java - 编译器不会推进单链表的递归反转

java - 如何使用ASM修改常量池?