我写了从Scala函数到Java函数的隐式转换:
import java.util.function.{Function => JavaFunction}
implicit def toJavaFunction[T, V](f: (T) => V): JavaFunction[T, V] = {
new JavaFunction[T, V] {
override def apply(input: T) = f(input)
}
}
但是,IntelliJ建议将其转换为单个抽象方法:
implicit def toJavaFunction[T, V](f: (T) => V): JavaFunction[T, V] = {
(input: T) => f(input)
}
当我转到第二种实现时,此方法中包装的函数将永远运行,并且执行永不终止。使第二种方法具有这种行为的第二种方法有何不同? IntelliJ是否缺少某些东西?