JAVA——进阶语法——使用lambda表达式(λ)进行函数式编程,对匿名内部内代码简化思路及案例在线程中的应用

Posted 叶不修233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA——进阶语法——使用lambda表达式(λ)进行函数式编程,对匿名内部内代码简化思路及案例在线程中的应用相关的知识,希望对你有一定的参考价值。

JAVA——进阶语法——使用lambda表达式(λ)进行函数式编程,对匿名内部内代码简化思路及案例、在线程中的应用

  • 注意1:本文介绍的函数式编程是对匿名内部类写法的进一步简化。需要掌握前置知识点:匿名内部类的用法。
  • 注意2:仅适用于只有一个抽象方法的接口实现
  • 注意3:(听说没事多用lambda表达式装逼容易被打~

例1:接口的实现-普通抽象方法

一、定义接口

1.首先定义一个只有一个抽象方法的接口

//定义接口Animal1
public interface Animal1 
	//在接口下写一个抽象方法run()
	void run();

二、实现接口

1.常规操作- 使用匿名内部类实现接口

public class Test1 

	public static void main(String[] args) 

		/**
		 * 常规操作- 使用匿名内部类实现
		 */
		Animal1 dog1 = new Animal1() 
			@Override
			public void run() 
				System.out.println("吃肉肉");
			
		;
		dog1.run();
	

2.使用lambda表达式(λ)进行函数式编程实现

public class Test1 

	public static void main(String[] args) 
		/**
		 * 使用lambda表达式(λ)进行函数式编程
		 */
		Animal1 dog2 = () -> 
			System.out.println("吃肉肉");
		;
		dog2.run();
	

3.使用lambda表达式(λ)进行函数式编程-如果重写的方法体中只有一行代码,大括号可以省略

public class Test1 

	public static void main(String[] args) 
		/**
		 * 使用lambda表达式(λ)进行函数式编程-如果重写的方法体中只有一行代码,大括号可以省略
		 */
		Animal1 dog3 = () -> System.out.println("吃肉肉");
		dog3.run();
	

例2:接口的实现-带参数的抽象方法

一、定义接口

1.首先定义一个只有一个抽象方法的接口

public interface Animal2 
	void run(String name);

二、实现接口

1.常规操作- 使用匿名内部类实现接口

例1中已介绍,非本文重点,不再详述,略。

2.使用lambda表达式(λ)进行函数式编程实现

public class Test2 

	public static void main(String[] args) 		
		/**
		 * 使用lambda表达式(λ)进行函数式编程
		 */
		Animal2 dog1 = (name) -> System.out.println(name+"吃肉肉");
		dog1.run("大黄");	
	

例3:接口的实现-带参数和返回值的抽象方法

一、定义接口

1.首先定义一个只有一个抽象方法的接口

public interface Animal3 
	String run(String name);

二、实现接口

1.常规操作- 使用匿名内部类实现接口

略。

2.使用lambda表达式(λ)进行函数式编程-有大括号时,使用return关键字,后面加返回内容

public class Test3 

	public static void main(String[] args) 		
		/**
		 * 使用lambda表达式(λ)进行函数式编程-有大括号时,使用return关键字,后面加返回内容
		 */
		Animal3 dog1 = (name) -> 
			return name+"吃肉肉";
		;
		String msg1 = dog1.run("大黄");
		System.out.println(msg1);
	

3.使用lambda表达式(λ)进行函数式编程-省略大括号时,return关键字也必须省略

public class Test3 

	public static void main(String[] args) 
		/**
		 * 使用lambda表达式(λ)进行函数式编程-省略大括号时,return关键字也必须省略
		 */
		Animal3 dog2 = (name) -> name+"吃饭饭";
		String msg2 = dog2.run("大白");
		System.out.println(msg2);
	

例4:Runnable接口的实现-lambda表达式在多线程中的应用

一、实现接口

1.常规操作- 使用匿名内部类实现接口

	Runnable r1 = new Runnable() 
			@Override
			public void run() 
				System.out.println(Thread.currentThread().getName());
			
	;
	new Thread(r1,"一号线程").start();

2.使用lambda表达式(λ)进行函数式编程

Runnable r2 = () -> System.out.println(Thread.currentThread().getName());
new Thread(r2,"二号线程").start();

3.使用lambda表达式(λ)进行函数式编程-进一步简化程序,一行代码搞定

new Thread(() -> System.out.println(Thread.currentThread().getName()),"三号线程").start();

以上是关于JAVA——进阶语法——使用lambda表达式(λ)进行函数式编程,对匿名内部内代码简化思路及案例在线程中的应用的主要内容,如果未能解决你的问题,请参考以下文章

Java语法进阶16-Lambda-Stream-Optional

Java8 Lambda表达式

Java8 Lambda表达式教程

从 λ 演算看 JS 与 JAVA8 闭包

λ表达式之争:Scala vs Java8

java中的lambda表达式是啥?