【发布时间】:2021-09-06 18:19:10
【问题描述】:
当我编译我的代码时,它报告编译错误。 我认为它会运行但报告错误! map() 阶段包含通用字段和设置值时为什么会出错,
** 错误信息:
java:不兼容的类型:java.lang.Object 无法转换为
java.util.List
public class B {
private Long id;
private Map<String, Long> wk;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Map<String, Long> getWk() {
return wk;
}
public void setWk(Map<String, Long> wk) {
this.wk = wk;
}
}
public static class A {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static void main(String[] args) {
List<A> details = new ArrayList<>(12);
List<B> collect = details.stream()
.map(detail -> {
B b = new B();
b.setId(12L);
Map mp = new HashMap(3);
mp.put("12",new Object());
b.setWk(mp);
return b;
}).collect(Collectors.toList());
}
【问题讨论】:
-
不要对
Map和HashMap使用原始类型。 -
是的,给 Map 和 HashMap 添加泛型,如果你不使用它的地方,所有其他泛型都将被删除
-
您的代码无法编译,原因不是您给出的错误消息。如果我稍微修改它以使其编译,它不会给出错误消息。请给出一个完整的、可复现的代码示例。
-
和别人说的完全一样。 不要使用原始类型。始终提供必要的类型参数。
标签: java lambda type-inference