异常:无法转换为java.lang.Long
我遇到了一个异常,我不知道如何修复异常:无法转换为java.lang.Long,java,Java,我遇到了一个异常,我不知道如何修复 Caused by: java.lang.ClassCastException: com.xitee.ccpt.entity.ProjectRoleSkill cannot be cast to java.lang.Long 在com.xitee.ccpt.ui.project.ProjectRoleSkillGrid$3.buttonClick(ProjectRoleSkillGrid.java:222)~[classes/:na] public void
Caused by: java.lang.ClassCastException: com.xitee.ccpt.entity.ProjectRoleSkill cannot be cast to java.lang.Long
在com.xitee.ccpt.ui.project.ProjectRoleSkillGrid$3.buttonClick(ProjectRoleSkillGrid.java:222)~[classes/:na]
public void buttonClick(ClickEvent event) {
Long projectRoleSkillId = (Long) getValues().iterator().next();
ProjectRoleSkillAddWindow projectRoleAddWindow = new ProjectRoleSkillAddWindow("Add Project Role Skill",
new DialogWindowListener<ProjectRoleSkill>() {
@Override
public void dialogConfirmed(ProjectRoleSkill projectRoleSkillUpdated) {
projectRoleSkillUpdated.setProjectRole(projectRole);
projectRoleSkillUpdated.setProjectRoleSkillId(projectRoleSkillId);
projectRoleSkillService.save(projectRoleSkillUpdated);
refreshContent();
}
@Override
public void dialogClosed(boolean confirmed) { }
});
rojectRoleAddWindow.loadToEdit(projectRoleSkillService.findProjectRoleSkillByIdForEditWindow(projectRoleSkillId));
CcptUI.getCurrent().addWindow(projectRoleAddWindow);
}
public void按钮单击(单击事件){
Long projectRoleSkillId=(Long)getValues().iterator().next();
ProjectRoleSkillAddWindow projectRoleAddWindow=新建ProjectRoleSkillAddWindow(“添加项目角色技能”,
新建对话框WindowListener(){
@凌驾
公共作废对话框已确认(ProjectRoleSkill ProjectRoleSkill更新){
projectRoleSkillUpdated.setProjectRole(projectRole);
projectRoleSkillUpdated.setProjectRoleSkillId(projectRoleSkillId);
projectRoleSkillService.save(projectRoleSkillUpdated);
刷新内容();
}
@凌驾
公共无效对话框已关闭(布尔值已确认){}
});
RojectRoleAddWidow.loadToEdit(projectRoleSkillService.FindProjectRoleSkillByIDForeEdit窗口(projectRoleSkillId));
CcptUI.getCurrent().addWindow(projectRoleAddWindow);
}
这不是一个漫长的过程。我假设getValues()
返回类型为ProjectRoleSkill
的iterable
为了避免这种情况,而不是
public Set<Object> getValues() {
return new HashSet<Object>(grid.getSelectedRows());
}
public Set getValues(){
返回新的哈希集(grid.getSelectedRows());
}
您应该将方法签名重写为
public Set<ProjectRoleSkill> getValues() {
return new HashSet<>(grid.getSelectedRows());
}
public Set getValues(){
返回新的哈希集(grid.getSelectedRows());
}
这样,IDE就不会让您进行长时间的强制转换。然后,您还可以看到我假设的
ProjectRoleSkill
类上的getId()
方法。您正在尝试将ProjectRoleSkill
转换为Long
。此外,返回的ProjectRoleSkill对象可能有一个内部ID,该ID为Long,可以通过调用getId()获得在上面,OP忘了写。大概是这样。@BenR你能给我更多的细节吗?@IliaTapia我不确定我能给多少细节,这在Java中是一个相当基本的概念。我是Java的初级,所以我不知道你的意思事实上>所以你说将方法签名重写为公共集getValues(){odher部分呢,是的,我有一个getProjectRoleSkillId,但老实说,我不理解你的想法@BenR。如果你使用的是Java 1.6或更高版本,你可以用
替换return语句中的
。程序的其余部分需要知道getValues()
不仅返回对象
s,还返回ProjectRollSkill
s。否则,程序的其余部分无法调用getProjectRoleSkillId
。
public Set<ProjectRoleSkill> getValues() {
return new HashSet<>(grid.getSelectedRows());
}