@FunctionalInterface
public interface ConInterface2 {
void doSom(List d);
}
public class MainTest {
public static void main(String[] args) {
List<String> a = new ArrayList();
a.add("aaa");
a.add("bbb");
//方式一
ConInterface2 cif = (gg) -> System.out.println(gg.get(1));
cif.doSom(a);
//方式二
bb(a,(List q) -> {
System.out.println(q.get(1));
});
}
private static void bb(List w,ConInterface2 c2){
c2.doSom(w);
}
}
運行結果
bbb
bbb
uj5u.com熱心網友回復:
方式一是把這個lambda 運算式賦值給對應的functional interface 類方式二是直接把lambda 運算式當作一個引數傳入方法
雖然沒有用到new, 但是每個lamba 運算式都會被編譯器生成一個新的對應的functional interface 的實體
uj5u.com熱心網友回復:
是不是方式一相當于重寫了介面的方法,然后new一個實作類物件,調物件的方法傳入引數。
方式二就是把引數改成lambda的形式傳給方法
uj5u.com熱心網友回復:
他們的區別不在于lambda,而在于方式一是賦值給變數,方式二是當做一個引數轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/83516.html
標籤:Java相關
