scala有一个方法 参数是一个函数名,现在java需要调用这个函数,请问应该怎么调用?

分享 未结
0 0 1 15
hsh0756232 2018-09-29发布
收藏 点赞
//scala 代码
def fetchCache1[P0](f: (P0) => String, params: List[Any]) = {
  ...
 f(params.head.asInstanceOf[P0])

}


scala 调用:
def func(params:String):String{
  println(params)
  "return"
}
fetchCache1(func,List[String]("call...."))


java 代码应该如何调用fetchCache1 这个方法呢?


回帖
  • 2018-09-29

    Java 8 可以直接调用 Scala 2.12 的高阶函数:

    def fetchCache1[P0](p: P0, f: (P0) => String) = {
      f(p)
    }
    

    Java 8 调用代码:

    public class JavaApp {
        public static void main(String[] args) {
            String res = App.fetchCache1(123, (Integer i) -> i.toString());
            System.out.println(res);
        }
    }
    


    1