java8之接口的默认方法和lambda表达式小结(一)

来源:互联网 发布:中国男人 外国 知乎 编辑:程序博客网 时间:2024/06/15 05:36

一、接口的默认方法
允许给接口添加 一个 非抽象 的 方法实现,使用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

原创粉丝点击