Lambda表达式引发的思考

简介: Lambda表达式引发的思考

Lambda表达式引发的思考


今天看了尚硅谷周阳老师的视频,内容是Lambda表达式,其中还讲到了JDK1.8以后接口的一些特性,有新的收获,将其记录形成总结。


1.首先,先定义一个接口

interface MyInterface{
    public void hello();
}

2.然后在主方法中,new一个接口出来,并实现其中的方法。


public class LambdaTest {
    public static void main(String[] args) {
        MyInterface myInterface = new MyInterface() {
            @Override
            public void hello() {
                System.out.println("hello");
            }
        };
        myInterface.hello();
    }
}


没想到编译器不会报错,而是会正常执行。我以前一直认为接口是不能被实例化的,其实是可以的,这是基于一种匿名实现类的机制。


3.现在用lambda表达式修改接口的实现。记住一个口诀:括号拷贝,箭头写死,大括号写实现。

    MyInterface myInterface=()->{
            System.out.println("hello Lambda");
        };
        myInterface.hello();

4.如果在接口中,新增了一个方法hello2():


interface MyInterface{
    public void hello();
    public void hello2();
}


那么刚刚的lambda表达式就会报错,这是为什么呢?lambda其实是为了函数式编程,当接口中只有一个声明方法时,该接口相当于函数式接口,底层默认为该接口加了 @FunctionalInterface 注解;如果接口中出现了多个方法,那么lambda表达式将不能识别。


5.现在我们看看接口在jdk1.8后还有哪些特性

interface MyInterface{
    public void hello();
    default int multiply(int x,int y){
        return x*y;
    }
    public static void helloStatic(){
        System.out.println("helloStatic");
    }
}


(1)可实现default修饰的方法

(2)可以实现静态方法


以上就是我对Lambda表达式写法的总结和接口的新认识,感谢周阳老师!


相关文章
|
6月前
|
编译器
C++11 lambda表达式(上)
C++11 lambda表达式
34 0
|
17天前
|
算法 编译器 C++
C++中的lambda表达式
C++中的lambda表达式
5 0
|
17天前
|
编译器 C语言 C++
C++ lambda表达式
C++ lambda表达式
|
1月前
|
并行计算 Java 编译器
Lambda表达式超详解
Lambda表达式超详解
|
3月前
Lambda表达式
Lambda表达式
25 0
|
3月前
|
编译器 C++
C++lambda表达式
C++lambda表达式
|
3月前
|
算法 编译器
C++11(lambda表达式)
C++11(lambda表达式)
30 0
|
6月前
|
算法 编译器
C++11 lambda表达式(下)
C++11 lambda表达式(下)
61 2
|
6月前
|
算法 搜索推荐 编译器
C++11:lambda表达式
C++11:lambda表达式
25 0
|
8月前
|
存储 编译器 C++
c++ lambda表达式
c++ lambda表达式
64 0