Java类型转换异常:如何遍历EmployeeLocation对象获取id
问题解决方法
错误原因
你把列表的泛型声明错了:List<String> locationList 应该是 List<EmployeeLocation>。getEmployeeLocationByQuery 方法实际返回的是EmployeeLocation对象的列表,不是字符串列表。打印列表时能看到对象的toString输出,是因为List的toString会调用每个元素的toString,但循环里强行把EmployeeLocation转成String就会触发ClassCastException。
修正后的代码
// 把泛型改成EmployeeLocation,匹配方法实际返回的类型 List<EmployeeLocation> locationList = locmgr.getEmployeeLocationByQuery("name LIKE'"+searchName+"%'"); System.out.println("print location"); System.out.println(locationList); // 循环变量用EmployeeLocation类型,直接操作对象 for (EmployeeLocation location : locationList) { System.out.println("Inside Loop"); // 调用getId()方法获取目标id System.out.println("员工位置ID: " + location.getId()); // 需要其他属性的话,直接用对应的getter方法,比如获取name // System.out.println("名称: " + location.getName()); }
关键改动点
- 修正列表泛型:从
List<String>改为List<EmployeeLocation>,让变量类型和方法返回值类型一致 - 循环变量类型改为
EmployeeLocation,这样就能直接调用对象的getId()方法获取你需要的ID值
内容的提问来源于stack exchange,提问作者Tan
相关产品推荐
相关产品推荐

