gpt4 book ai didi

lambda - java 8 lambda toMap 显示类型转换错误

转载 作者:行者123 更新时间:2023-12-02 05:52:02 24 4
gpt4 key购买 nike

尝试使用 lambda 表达式 java 8 收集要映射的对象列表时出现类型转换错误

这是代码:

public static void main(String[] args){
List<Player> players = Arrays.asList(
new Player("Liz", Gender.FEMALE, 20),
new Player("Liz", Gender.FEMALE, 22),
new Player("Bob", Gender.MALE, 20)
);

System.out.println(
players.stream()
.collect(toMap(
player -> player.getName()+"_"+player.getAge(),
// above line giving error.
//The method getAge() is undefined for the type Object
//- The method getName() is undefined for the type Object
player -> player))
);

}

一旦我像下面一样将其转换到(玩家),它就可以正常工作。知道为什么编译器要求类型转换吗?

player -> ((Player) player).getName()+"_"+((Player) player).getAge()

玩家等级如下:

class Player {

private String name;
private Integer age;
private Gender gender;

public Player(String name, Gender gender, Integer age){
this.name = name;
this.gender = gender;
this.age = age;
}
// ...... with corresponding getters and setters
}

最佳答案

这在某些版本中是一个问题(我想说1.8.0_45,但我无法确认)。我刚刚在 1.8.0_71 上尝试了你的代码,它对我有用。

最新版本是 1.8.0_111,因此您应该尝试升级到该版本。

关于lambda - java 8 lambda toMap 显示类型转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com