【发布时间】:2019-05-25 15:34:32
【问题描述】:
网站上有一些类似的问题,但他们使用的地图会改变类型。我不太明白我在这段代码中做错了什么,我希望有人能纠正我。
代码取自 JPARepository,因此 findAll() 但可以忽略
编辑 - 返回 forEach 不起作用,但我只关心 R 不可转换的错误。为 setPosts 添加签名
boolean canViewHidden = hasAuthority(Permissions.Post.VIEWHIDDEN);
//findAll should return List<Category>
return categoryRepository.findAll().forEach(
//each category has a Set<Post> accessible by getPosts
category -> category.getPosts().stream()
//filtering out the posts that we can't view
.filter(post -> canViewHidden || !post.isHidden())
//my understanding is filter results in a Stream of Post
//however category::setPosts here gives the R is not convertible to Set<Post>
.collect(Collectors.collectingAndThen(Collectors.toSet(), category::setPosts))
);
来自 Post.java 的 setPosts 方法
public void setPosts(Set<Post> posts) {
this.posts = posts;
}
//spring annotation can be ignored
@OneToMany(mappedBy = "category")
private Set<Post> posts;
【问题讨论】:
-
forEach不返回无效吗?如果它有效,我会感到惊讶。 -
不管怎样,你能把
setPosts的签名贴出来吗? -
已编辑,谢谢,你说得对,返回 foreach 不起作用我最初使用的是 Stream.of()...我真的只是关心不可转换的原因
标签: java-8 java-stream