如何将Java 8流映射转换为Scala

时间:2019-06-12 14:27:00

标签: java scala stream mapping scala-java-interop

尝试将代码从Java 8转换到Scala 2.11时出现问题,该代码需要一串String并应用带有一个参数的函数。

我正在使用IntelliJ,并尝试使用IntelliJ的自动Java到Scala转换器功能来转换代码。这是行不通的。

这是Java代码:

Stream<String> lines = Files.lines(path);
List<String> myList = lines.map(CommonUtils::myfunction).collect(Collectors.toList());

在CommonUtils功能中:

public static String myfunction(String s) {
 ...
}

使用IntelliJ的转换功能转换代码:

var myList: util.List[String] = new util.ArrayList[String]
...
val lines: Stream[String] = Files.lines(path)
myList = lines.map(CommonUtils.myfunction).collect(Collectors.toList)

IntelliJ将最后一行突出显示为错误:

Missing arguments for method myfunction(String)
Type mismatch, expected: Function[_>:String,_<NotinferedR], actual: String => String

我已经在地图内尝试过此操作,但结果相同:

line => CommonUtils.myfunction(line)

建议表示赞赏!

0 个答案:

没有答案