美文网首页
JDK1.8之Lamda表达式(匿名内部类优化)

JDK1.8之Lamda表达式(匿名内部类优化)

作者: 秋笙fine | 来源:发表于2019-01-14 15:10 被阅读0次

1.Lamda表达式的作用

例如一个匿名内部类的使用,使用Lamda表达式可以简化。

package TestDemo;
interface IMessage{
    public void print();
}

public class TestDemo{
public static void main(String[] args) {
    
    fun(()->System.out.println("Hello World!"));
    }
    public static void fun(IMessage msg){
        msg.print();
    }

}
package TestDemo;

interface IMessage{
    public void print();
}

public class TestDemo{
    
    public static void main(String[] args) {
        fun(new IMessage() {
        public void print(){
            System.out.println("Hello World!");
        }
        });

    }
    public static void fun(IMessage msg){
        msg.print();
    }

}

图一Lamda表达式和图二的匿名内部类明显是Lamda表达式更加简便。

Lamda就是为了解决匿名类形式过于复杂的作用。

2.Lamda表达式的语法形式:

(参数)->单行语句
(参数)->{多行语句};
(参数)->表达式

范例:观察有参的单行语句:

package TestDemo;

interface IMessage{
    public void print(String str);
}

public class TestDemo{
    
    public static void main(String[] args) {
        fun((s)->System.out.println(s));

    }
    public static void fun(IMessage msg){
        msg.print("Hello World");
    }

}

结果也能输出:


image.png
先说明一下,这里匿名内部类用到了接口回调(本质是方法多态性 这里的接口回调类似于Okhttp3里面,网络请求参数的填充),回调方法体就是Lamda表达式这里。

范例:观察多行语句

package TestDemo;

interface IMessage{
    public void print(String str);
}

public class TestDemo{
    
    public static void main(String[] args) {
        fun((s)->{
            s=s.toUpperCase();//转大写操作
            System.out.println(s);
        });

    }
    public static void fun(IMessage msg){
        msg.print("Hello World");
    }

}

转大写也成功了:


image.png

如果是一个表达式:

package TestDemo;

interface IMessage{
    public int add(int number1,int number2);
}

public class TestDemo{
    
    public static void main(String[] args) {
        fun((s1,s2)-> s1 + s2);//或者 fun((s1,s2)-> {return s1 + s2;});

    }
    public static void fun(IMessage msg){
        System.out.println(msg.add(10,20));
    }

}

结果:


image.png

总结:
利用Lamda表达式是对匿名内部类的复杂代码的优化。

相关文章

  • JDK1.8之Lamda表达式(匿名内部类优化)

    1.Lamda表达式的作用 例如一个匿名内部类的使用,使用Lamda表达式可以简化。 图一Lamda表达式和图二的...

  • --插入:lamda表达式--

    Lamda表达式属于函数式编程的概念,要理解函数式编程的产生目的,就要先理解匿名内部类。 匿名内部类: 使用lam...

  • java8 lambda-2-各类语言中的lambda

    C/C++:函数指针 C#:委托 java之前:接口参数,实际传入匿名对象(匿名内部类) lamda表达式是Jav...

  • Lamda表达式

    Lamda表达式(函数式编程) 避免匿名内部类定义过多 可以让代码更简洁 去掉没有意义的代码,只留下核心的逻辑 1...

  • 函数式编程

    Lamda表达式 从JDK1.8开始为了简化使用者进行代码的开发,专门提供有Lamda表达式的支持,利用此操作形式...

  • Lamda表达式

    为什么要使用Lamda表达式 避免匿名内部类定义过多可以让代码看起来简洁去掉一些无意义代码,只留下核心的逻辑 函数...

  • Lamda表达式

    为什么要使用lamda表达式 1、避免匿名内部类定义过多2、使代码看起来更简洁3、去掉一堆无意义的代码,只留下核心...

  • Kotlin之Lambda表达式和成员引用

    Lambda介绍:作为函数参数的代码块 用匿名内部类实现监听器 现在用Kotlin的Lambda表达式来替换匿名内...

  • Java8 Lambda表达式

    1.替代匿名内部类 使用匿名内部类 使用lambda表达式 2.使用lambda表达式对集合进行迭代 3.使用la...

  • Java8教程

    本次只讲三个东西,Lamda表达式、函数引用、函数式接口。 一、Lamda表达式 也就是说以前需要用匿名实现类来做...

网友评论

      本文标题:JDK1.8之Lamda表达式(匿名内部类优化)

      本文链接:https://www.haomeiwen.com/subject/venddqtx.html