Exception:无法转换为java.lang.Long

问题描述 投票:-7回答:1

我遇到异常,我不知道如何解决。

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);
}
java
1个回答
-1
投票
Long projectRoleSkillId = (Long) getValues().iterator().next();
这不算长。我假设getValues()返回的类型为ProjectRoleSkill

为避免这种情况,而不是拥有

public Set<Object> getValues() { return new HashSet<Object>(grid.getSelectedRows()); }

您应该将方法签名重写为

public Set<ProjectRoleSkill> getValues() { return new HashSet<>(grid.getSelectedRows()); }

这样,IDE不会让您转换为Long。然后,您还可以看到我认为在getId()类上的ProjectRoleSkill方法。
© www.soinside.com 2019 - 2024. All rights reserved.