/*通過"類名",引用它的"靜態(tài)方法"*///已有一個接口interfaceIA{publicintgetMax(int a ,int b);}publicclassDemo02{publicstaticvoidmain(String[] args){//現(xiàn)在調(diào)用calc()方法//1.傳入Lambda--直接重寫getMax(int a,int b)方法calc((a,b)->{return a > b ? a : b;});//2.我們發(fā)現(xiàn)現(xiàn)有類庫中,有個方法實現(xiàn)了這個功能:Math類的靜態(tài)方法"max()"//由于是靜態(tài)方法,我們就可以直接通過"類名"引用靜態(tài)方法:格式:類名::方法名calc(Math::max);//實際傳入的是Math類的max()方法,calc方法內(nèi)部調(diào)用的也不是Lambda了,而是Math的max()方法}//已有的一個方法publicstaticvoidcalc(IA a){int max = a.getMax(10,20);System.out.println("最大值:"+ max);}}
3. Lambda方法引用_構(gòu)造器引用
1).引用某個類的“構(gòu)造方法”; 2).示例代碼:
//自定義貓類classCat{private String name;publicCat(String name){this.name = name;}@Overridepublic String toString(){return"我是一只小貓,我叫:{"+"name='"+ name +'\''+'}';}}//測試類publicclassDemo03{publicstaticvoidmain(String[] args){ArrayList<String> list =newArrayList<>();//存儲是貓的名字list.add("小花");list.add("小紅");list.add("小翠");//將這個集合中的名字構(gòu)造出對應(yīng)的Cat對象,并打印list.stream().map(s ->newCat(s))//將Stream<String> 轉(zhuǎn)換為Stream<Cat>.forEach(cat -> System.out.println(cat));//我們看map(s -> new Cat(s)),功能:接收一個String,返回一個Cat對象//而Cat類的帶參構(gòu)造方法也實現(xiàn)這個功能。這時,我們就可以引用:Cat類的帶參的構(gòu)造方法list.stream().map(Cat::new)//引用Cat的String參數(shù)的構(gòu)造方法,自動匹配Cat的String參數(shù)的構(gòu)造方法.forEach(cat -> System.out.println(cat));}}
4. Lambda方法引用_類引用成員方法【難點】
1).通過“類名”來引用它的“普通成員方法”。 2).示例代碼:
//已有的一個接口interfaceIA{publicintfindStr(String srcStr,String subStr);}//測試類publicclassDemo04{publicstaticvoidmain(String[] args){//1.使用匿名內(nèi)部類fun(newIA(){@OverridepublicintfindStr(String srcStr, String subStr){//找第二個參數(shù)在第一個參數(shù)中出現(xiàn)的位置int index = srcStr.indexOf(subStr);return index;}});//2.使用Lambdafun((srcStr, subStr)-> srcStr.indexOf(subStr));//也是:找第二個參數(shù)在第一個參數(shù)中出現(xiàn)的位置//當(dāng)我們的Lambda表達(dá)式中,是調(diào)用第一個參數(shù)的某個方法,將第二個參數(shù)作為調(diào)用第一個參數(shù)的方法的實參//這時可以使用"第一個參數(shù)的類型名::這個類中被調(diào)用的方法名"的形式引用一個類的普通方法。fun(String::indexOf);}//已有的一個方法publicstaticvoidfun(IA a){int index = a.findStr("我愛Java","Java");//內(nèi)部:"我愛Java".indexOf("Java")System.out.println("索引位置:"+ index);}}