1. 程式人生 > >java8第四課:方法引用和構造器引用

java8第四課:方法引用和構造器引用

  這節課我們開始講方法引用和構造器引用,直接看程式碼

 

public class MethodReference {



    /**

     * 方法引用:一種lambda表示式的簡寫方式

     * 語法:

     *  物件::普通方法名

     *  類::普通方法名

     *  類::靜態方法名

     */

    
public static void main(String[] args) {         //d物件::普通方法名         I1 i1 = System.out::println;         i1.fun("123");         /**          *
解釋:          * 這個就相當於:          * I1 i1 = (str)->System.out.println(str);          *          * 限制: 未實現的方法的返回值型別和引數型別必須和被引用的方法的返回值型別和引數型別一致          */        
I2 i2 = String::startsWith;         /**          * 解釋:          * 上面這個就相當於:          * I2 i2 = (str1,str2)->return str1.startsWith(str2);          */         I3<String> i3 = String::new;         /**          * 上面這個叫構造器引用,語法為 類::new          * 上面這句相當於:          * I3 i3 = ()->return new String();          *          * 注意:          * 使用構造器引用時未被實現的抽象方法的引數表要和對應構造器的引數表相同,返回型別必須就是構造器對應的類          */         String s = i3.newInstance();//可以看到返回的是String         /**          * 最後說明,方法引用和構造器引用用的人並不多,你寫出來別人還可能看不懂,所以知道就行,要用還是用原生的lambda表示式          */     } } @FunctionalInterface interface I1{     void fun(String str); } @FunctionalInterface interface I2{     boolean fun(String str1, String str2); } @FunctionalInterface interface I3<T>{     T newInstance(); }