使用Lambda调用父类方法时出错

时间:2017-07-27 07:49:30

标签: java lambda casting functional-programming java-8

这是我的this question

的扩展名

我想从下面的列表中获取ID,

List allUserGroups = UserBC.getAllGroupsForUser(userId, deptID);

此List包含我需要对GroupData实体进行类型转换的对象。 GroupData扩展了PartyData,其中定义了getId()方法。所以我尝试使用labda,

allUserGroups.stream()
.map(GroupData.class::cast)
.map(GroupData::getId)

问题在于,编译器显示类型GroupData没有定义适用于此的getId(Object)。

  

类型GroupData没有定义适用于此的getId(Object)

正常for循环可以正常工作,

for(Object userGroup: allUserGroups){
    long usergrp = ((GroupData) userGroup ).getId();
}

任何人都可以建议如何使用Labmda实现这一目标

1 个答案:

答案 0 :(得分:0)

在获取由Jespher评论的列表时使用了类型转换,它解决了我的问题,

List<GroupData> allUserGroups = (List<GroupData>) UserBC.getAllGroupsForUser(userId, deptID);
allUserGroups.stream().map(GroupData::getId)