函数式编程--Lambda

本文介绍了Java中的函数式编程概念,重点讲解了Lambda表达式的使用,包括如何简化代码、方法引用的四种形式,并通过实例展示了静态方法、实例方法以及特定类方法的引用。Lambda表达式和方法引用在简化代码和提高代码可读性方面有着显著的效果。
摘要由CSDN通过智能技术生成

函数式编程

Lambda表达

只有一个方法的函数式接口才可以使用Lambda,@Funcctionalinterface注解表示是函数式接口

1、用Lamda表达式精简数据,举例

interface IMessage{
	public void send(String str);
}
public class Demo{
	public static void main(String[] args) {
		IMessage msg=new IMessage(){
			public void send(String str){
				System.out.println("发送消息"+str);
			}
		};
		msg.send("coco");
	}
}

运行后

发送消息coco

使用Lamda表达式后

interface IMessage{
	public void send(String str);
}
public class DemoLambda{
	public static void main(String[] args) {
		IMessage msg=(str)->{System.out.println("发送消息"+str);};
		msg.send("coco");
	}
}

Lambda表达式提供的格式

  • 方法没有参数:()->{};

  • 方法有参数: (参数,参数)->{};

  • 如果现在只有一行语句返回:(参数,参数)->语句;

方法引用

1、引用数据最大的特点是可以进行内存的指向处理

2、方法引用:不同的方法名称可以描述同一个方法。如果要进行方法的引用,有以下四种形式

  • 引用静态方法: **类名称::static方法名称 **
  • 引用某个实例对象的方法:实例化对象::普通方法
  • 引用特定类型的方法: 特定类::普通方法
  • 引用构造方法: 类名称::new

}3、实际应用

​ 1)引用静态方法:在String类里提供String.valueOF()方法,这个方法就是静态方法。

@FunctionalInterface
interface IFunction<P,R>{//P描述的是参数,R描述的是返回值
	public R 转换(P p);
}
public class Demo{
	public static void main(String[] args) {
		IFunction<Integer, String>  fun=String :: valueOf;
		String str =fun.转换(100);
		System.out.print(str.length());
	}
}

结果:

3

2)引用某个实例对象的方法:toUpper,此方法必须在有实例化对象提供的情况下才可以使用

@FunctionalInterface
interface IFunction<R>{//P描述的是参数,R描述的是返回值
	public R upper();
}
public class Demo{
	public static void main(String[] args) {
		IFunction< String>  fun="String" :: toUpperCase;
	
		System.out.print(fun.upper());
	}
}
结果
STRING

3)引用特定类中的方法:比较大小的方法。compareTo

@FunctionalInterface
interface IFunction<P>{//P描述的是参数,R描述的是返回值
   public int  compare(P p1,P p2);
}
public class Demo{
   public static void main(String[] args) {
   	IFunction< String>  fun=String :: compareTo;
   
   	System.out.print(fun.compare("A","a"));
   }
}
结果
-32
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值