Java 尝试与startwith匹配时发生类强制转换异常
我正在尝试匹配文件前缀是否与我的对象匹配,但我得到了classcastexceptionJava 尝试与startwith匹配时发生类强制转换异常,java,Java,我正在尝试匹配文件前缀是否与我的对象匹配,但我得到了classcastexception for (int i=0;i<files.length;i++) { File f= files[i]; String s=listeClients.get(i).getShortname(); if(f.getName().startsWith(s)) { Sys
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());
}
}
非常感谢问题显然是
listclients
被声明为列表
,但在运行时它实际上包含java.lang.Boolean
。由于泛型的实现(调用)方式,JVM实际上无法检测到这一点,直到它到达
listeClients.get(i)
它实现为
((com.dev.pojo.Clients)(listeClients.get(i))
导致ClassCastException
您需要找到并修复将java.lang.Boolean
插入此列表的代码;您可能需要更加注意编译器警告,因为您的编译器可能会通过一条关于未检查强制转换的警告消息来警告您这种可能性
(此外,正如其他人所指出的,您需要删除
if
条件后的分号。但这不是您发布的异常的来源,因为它发生在该行之前。)您不应该有一个;测试结束后直接进行。请尝试清理项目。您发布的错误(可能)不会发生在您发布的代码中。@dystroy,我的错,The;这是一个打字错误。当然没有。我更新了我的代码。非常感谢你的帮助。我有问题。我的客户端对象实现了parcelable(我在android上开发),以便通过活动传递它。我的列表包含2个元素,但只有第一个元素通过活动传递。第二个被转换成布尔值,我不知道why@user2177823:酷,我很高兴我的回答对你有帮助。:-)
((com.dev.pojo.Clients)(listeClients.get(i))