この問題は次のように要約できます。
Java から呼び出されるいくつかのメソッドを定義するクラスがあります。それらの1つは次のような署名を持っています:
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>);
どうしてこれなの?