Consider the following Scala code:
package scala_java
object MyScala {
def setFunc(func: Int => String) {
func(10)
}
}
Now in Ja
The easiest way for me is to defined a java interface like:
public interface JFunction {
public B compute( A a );
}
Then modify your scala code, overloading setFunc
to accept also JFunction
objects such as:
object MyScala {
// API for scala
def setFunc(func: Int => String) {
func(10)
}
// API for java
def setFunc(jFunc: JFunction[Int,String]) {
setFunc( (i:Int) => jFunc.compute(i) )
}
}
You will naturally use the first definition from scala, but still be able to use the second one from java:
public class MyJava {
public static void main(String [] args) {
MyScala.setFunc(myFunc); // This line gives an error
}
public static final JFunction myFunc =
new JFunction() {
public String compute( Integer a ) {
return String.valueOf(a);
}
};
}