java:不兼容类型:推理变量T具有不兼容的边界等式约束:下限:java.util.List

我试图从流中获取一个列表,但我有一个例外。

这是带有对象列表的Movie对象。

public class Movie { private String example; private List movieTranses; public Movie(String example, List movieTranses){ this.example = example; this.movieTranses = movieTranses; } getter and setter 

这是MovieTrans:

 public class MovieTrans { public String text; public MovieTrans(String text){ this.text = text; } getter and setter 

我在列表中添加元素:

 List movieTransList = Arrays.asList(new MovieTrans("Appel me"), new MovieTrans("je t'appel")); List movies = Arrays.asList(new Movie("movie played", movieTransList)); //return a list of MovieTrans List movieTransList1 = movies.stream().map(Movie::getMovieTranses).collect(Collectors.toList()); 

我有这个编译错误:

 Error:(44, 95) java: incompatible types: inference variable T has incompatible bounds equality constraints: MovieTrans lower bounds: java.util.List 

map电话

 movies.stream().map(Movie::getMovieTranses) 

Stream转换为Stream> ,您可以将其收集到List> ,而不是List

要获取单个List ,请使用flatMap

 List movieTransList1 = movies.stream() .flatMap(m -> m.getMovieTranses().stream()) .collect(Collectors.toList()); 

表达式的类型是List> :它是getMovieTranses方法结果的串联。

请改用flatMap

 List movieTransList1 = movies.stream() .flatMap(m -> m.getMovieTranses().stream()) .collect(Collectors.toList());