将lambda函数存储在变量中?

时间:2015-09-11 10:37:28

标签: java lambda java-8

众所周知,在java-8中我们可以将函数/方法存储在变量中。通过使用以下方式。

    @FunctionalInterface
    public interface MyInterface {

      public string getValue(int val1, int val2);

    }


    public class MyClass {

    static String someFun(int val1, int val2) {
       return ""+(val1+val2)

    }

     static BiFunction<Integer, Integer, String> testParamFun = (a,b) -> ""+(a+b);

    public static void main(String[] args){

       MyInterface intr = MyClass::someFun;
       System.out.println(int.getValue(2,4)); // outpur will be "6" 

       /* i want this, but it give me compile time error? 
         I want to store that function in variable like i was doing in above case. */

   MyInterface inter = MyClass::testParamFun;
   System.out.println(inter.getValue(4,5)); // it gives me error.
   // then i tried this
   System.out.println(inter.apply(4,5)); // i got error again. 


    }

    }

我的问题是,如何将BiDirection存储在变量类型MyInterface

1 个答案:

答案 0 :(得分:5)

您需要参考BiFunction的方法:

MyInterface int_ = MyClass.testParamFun::apply;