Java で Scala PartialFunction を実装する最も簡単な方法は何ですか? でoxbow_lakesによって説明されているスキャフォールディングを使用しようとしています。PartialFunction を取る Scala メソッドを呼び出す。これが私のScalaコードです:
class MyScalaClass {
def instanceOfSomeType: SomeType = ...
def consume(processor: PartialFunction[SomeType, Unit]) {
processor.lift(instanceOfSomeType)
}
}
そして、これが私がJavaからそれを呼び出そうとしている方法です:
MyScalaClass myScalaClass = new MyScalaClass();
PartialTransformer<SomeType, Unit> fn = new PartialTransformer<SomeType, Unit>() {
@Override public boolean isDefinedAt(SomeType input) { return true; }
@Override protected Unit transform0(SomeType input) { return null; }
};
PartialFunction<SomeType, Unit> partial = PartialFunctionBridge$.MODULE$.fromPartialTransformer(fn);
myScalaClass.consume(partial);
コンパイラは私に教えてくれます:
consumeInt(scala.PartialFunction<SomeType,java.lang.Object>) in MyScalaClass cannot be applied
to (scala.PartialFunction<SomeType,scala.Unit>)