2015-09-11 2 views
0

Как известно, в 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

+0

Я не уверен, я понимаю, ваш конец цели здесь. Не могли бы вы немного пояснить? – Tunaki

+0

Если вы собираетесь опубликовать демонстрационный код, может ли он работать с демонстрационным кодом? – khelwood

+0

Я отредактировал мой вопрос. –

ответ

5

Вам необходимо обратиться к методу BiFunction «s:

MyInterface int_ = MyClass.testParamFun::apply; 
+0

спасибо. !!!! –

Смежные вопросы