public class Java {
public static void main(String[] args) {
ScalaService service = new ScalaService();
// This works, but it's confusing
{
scala.Option<String> so = scala.Option.apply("Hello");
scala.Option<Object> io = scala.Option.apply((Object) 10);
service.process1(so, io);
}
// Would be OK, but not really nice
{
scala.Option<Object> so = scala.Option.apply((Object) "Hello");
scala.Option<Object> io = scala.Option.apply((Object) 10);
service.process1(so, io); // Does not compile
}
// The preferred way
{
scala.Option<String> so = scala.Option.apply("Hello");
scala.Option<Integer> io = scala.Option.apply(10);
service.process1(so, io); // Does not compile
}
}
}
私は別の方法でプリミティブおよび非プリミティブ型を治療するために避けたいと思います。
def process2(s: Option[String], i: Option[java.lang.Integer]) {
print("2: ")
process1(s, i.map(v => v.toInt))
}
をが、これはメソッドのために別の名前が必要です。
は、だから私は、別の方法を追加することでこれを回避しようとしました。 これは発信者の観点から混乱する可能性があるため、他の可能性はありますか?私はメソッドのシグネチャは、ビットが同様に混乱だろうスカラ座2.10.1、およびJava 1.6
ご提案いただきありがとうございます。私は両方のメソッド(1つはScala用、もう1つはJava用)、両方ともInt/Integerで公開したいと思います。多くのサービス機能があるので、それは不足しているはずです。暗黙のパラメータに関しては、AFAIKはJavaで明示的に追加されなければなりません。それはおそらくあまりにも多くの要件:-) – Beryllium