尝试将代码从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)
建议表示赞赏!