jdk8新特性lambda表达式

jdk8新特性lambda表达式

lambda是java8新出的一个特性,现在很多面向对象的语言其实是即支持面向对象有支持面向过程编程的,
但是java只支持面向对象编程,所以java8就出了lambda表达式,他可以将函数作为参数进行传递,当然以
前版本的jdk也可以实现类似的功能,但是以前要实现的话需要用反射,反射用起来比较麻烦,有通过类的
反射去找到方法的反射,然后调用的是有又要进行异常处理,而且当一个参数是需要多种结构的方法
时,java就得写很多类来封装这些方法,但是使用lambda表达式后这些问题都了可以解决了。

下面直接和大家进行代码演示:

首先还是需要准备一个接口
@FunctionalInterface //此注解没有实际含义,他只是限制次接口中有且只能有一个方法
public interface A<T>{
	void run(T t) ;
}
写lambda表达式
public class B{
	public static void main(String[] args){
		// 1.自己写方法
		A<String> fun = a -> System.out.println(a) ; //如果有多条语句可以使用大括号{}
		fun.run(“小王同学”) ;

		// 2.保存系统自带的方法
		A<Object> fun1 = System.out::pringln ; //System.out表示一个对象 ::后面的是对象中的方法
		fun1.run("小王同学") ;
	}
}
系统提供的部分接口讲解
public class B{
	public static void main(String[] args){
		//1.Consumer 表示一个参数没有返回类型的方法
		Consumer<String> fun1 = a -> System.out.println(a) ;
		fun1.accept("小王同学") ;
		
		//2.Supplier 表示没有参数但是有返回类型的
		Supplier<String> fun2 = () -> "小王同学" ;
		String str = fun2.get() ;
		System.out.println(str) ;

		//3.Function 表示一个参数并且有返回值
		Function<String , String> fun3 = a -> a ;
		System.out.println(fun3.apply("小王同学")) ;

		//4.Predicate 一个参数返回布尔类型
		Predicate<String> fun4 = a -> "小王同学".equals(a) ;
		fun4.test("小王同学") ; //返回true

		//....当然jdk还提供了很多接口,大部分都在java,util,function包中,有兴趣的可以自己去了解一下
	}
}
	//遍历集合
	List<String> list = Arrays.asList("a" , "b" , "c" , "d") ;
	list.forEach(a - > {
		System.out.println(a) ;
	}) ;

希望对大家有所帮助

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值