java8之接口的默認方法和lambda表達式小結(一)

一、接口的默認方法
允許給接口添加 一個 非抽象 的 方法實現,使用default關鍵字:

  interface Test1 {
            //接口裏定義的抽象方法
            public abstract void method1(); 
            //接口的默認方法
            default String method2() {
                return "method2()";
            }
  }

實現了Test1接口的子類只需要實現method1()方法即可,默認方法method2()可以直接使用:

//接口不能直接實現,使用匿名內部類
Test1 test1 = new Test1(){
    @Override
    public void method1() {
        System.out.println("method1()");
    }
};
    //調用接口的抽象方法
    test1.method1(); //method1();
    //調用接口的默認方法
    test1.method2(); //method2();

除了默認方法,Java8的 接口 也可以有 靜態方法 的實現:

public interface MyInterf {
    String m1();
    default String m2() {
        return "Hello default method!";
    }        
    static String m3() {
        return "Hello static method in Interface!";
    }       
}

二、Lambda表達式
語法:(參數列表) 箭頭符合(->) {方法體}。
(參數1,參數2…參數n) -> {方法體}。
如果方法體只有一行代碼,可以省略大括號{}和return關鍵字。
(參數列表) -> 表達式
例:

//1.不需要參數,返回值爲5
    () -> 5;
//2.接收一個參數,返回其2倍的值
    (x) -> 2*x;
//3.接收兩個參數,返回和
    (x,y) -> x + y;
//4.接收一個字符串對象,並在控制檯打印輸出
    (String s) -> System.out.println(s);
//5.Java8可以自動推導參數類型,可以不用寫參數類型
    (s) -> System.out.println(s); //Java編譯器會根據你傳入的值自動推導出類型

注:Lambda表達式只能用來 簡化 僅包含 一個 public方法的 接口 的創建
例:

public interface In {
    void func();
}
//lambda表達式
a. In in1 = ()->{};
b. In in2 = ()->System.out.println("Lambda表達式");
c. In in3 = ()->{
    System.out.println("Lambda表達式1");
    System.out.println("lambda表達式2");
}
----------------------------------------------------
public interface In {
    void func(int a);
}
//lambda表達式
a. In in = a->System.out.println(a);
b. In in = (a)->{};
----------------------------------------------------
public interface In {
    int func(int a);
}
//lambda表達式
a. In in = a->a+1;
b. In in2 = a -> {
    return a+1;  
};
----------------------------------------------------
new Thread(new Runnable() {
    @Override
    public void run() {
        //do something
    }
}).start();
//lambda表達式
new Thread(()->{
    //do something
}).start();

Java的λ表達式只能用作賦值、傳參、返回值等。


http://download.csdn.net/download/steven_sf/9997234

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章