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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值