问题可以总结如下:
我有一个类,它定义了几个要从 java 调用的方法。其中一个具有如下签名:
import java.lang.{Double => JDouble}
def compute(x: Double, fun: Function1[Double,Double]) = ???
或者
def compute(x: Double, fun: Double => Double) = ???
当我在其中任何一个上使用 javap 时,它看起来像这样:
Double compute(double, scala.Function1<java.lang.Object, java.lang.Object>)
如果我使用以下别名
import java.lang.{Double => JDouble}
def compute(x: Double, fun: JDouble => JDouble) =
用 javap 看起来是正确的
public Double compute( double, scala.Function1<java.lang.Double, java.lang.Double>);
为什么是这样?