Java编写flatMap参数问题

在看spark官方文档时遇到一个问题,用java写spark structured streaming的flatMap的参数为什么不能直接写lambda函数,却要在参数前面加上(FlatMapFunction<String, String>)
官方给出的代码是这样:
Dataset<String> words = lines
  .as(Encoders.STRING())
  .flatMap((FlatMapFunction<String, String>) x -> Arrays.asList(x.split(" ")).iterator(), Encoders.STRING());


我试过如果如果不加(FlatMapFunction<String, String>),那么编译就会报错
这个(FlatMapFunction<String, String>)到底是什么意思
麻烦给与解答

看着像是强制类型转换。去掉的话,错误信息是不是与类型有关

又看了下,主要跟后面的split相关,似乎直接调用函数,无法知道x的类型,但是我不明白为什么不直接(String x)-> Arrays.asList(x.split(" ")).iterator()