lambda表达式与Function接口

首先我将用lambda表达式实现一个数学运算工具类,来演示下如何新建一个可以运用lambda表达式的工具类,实际开发中,也没有必要为简单的四则运算写一个工具类。当然这里只是为了演示

1 新建一个MathFunction类

public class MathFunction {

	public static int arithmetic(int number,
			Function<Integer,Integer> function){
		//这里Function只是一个功能接口,其两个泛型参数,分别是   lambda表达式   " -> " 前后的数据类型
		int result = function.apply(number);
		return result;
	}
}

2 新建一个测试类

public class MathFunctionTest {

	public static void main(String[] args) {
		System.out.println(MathFunction.arithmetic(20, f->f+3));//20+3
		System.out.println(MathFunction.arithmetic(20, f->f-3));//20-3
		System.out.println(MathFunction.arithmetic(20, f->f*3));//20*3
		System.out.println(MathFunction.arithmetic(20, f->f/3));//20/3
		System.out.println(MathFunction.arithmetic(20, f->f%3));//20%3
	}
}
运行结果:

23
17
60
6
2

上面的代码可以看出来 lambda表达式 其实就是一个函数式接口 即Function<Integer,Integer> function,下面我将用函数式接口Function实现计算一个人的姓名的长度是否大于3

1 首先新建一个User类(setter\getter就没拷贝了)

public class User {
	
	private String name;
	
	private int age;
	
	public User(String name,int age){
		this.name = name;
		this.age = age;
	}
}

2 新建一个UserFunction类,该类有两个方法,一个是实现Function<User,Boolean>重写的apply方法.这个方法实现了UserFunction这个类的功能(如果名字的长度大于3 返回true).

public class UserFunction implements Function<User,Boolean>{

	@Override
	public Boolean apply(User user) {
		//apply法是实现UserFunction这个类的功能,即姓名的长度大于3 则返回true
		//apply方法的参数是Function<User,Boolean>的第一个参数类,
		//apply方法的返回类型是Function<User,Boolean>的第二个参数类型,
		return user.getName().length()>3;
	}
	
	public static Boolean getNameLengthThan3(User user,UserFunction userFunction){
		return userFunction.apply(user);
	}
}
3 新建一个测试类

public class UserTest {
	
	public static void main(String[] args) {
		
		User user = new User("name",22);
		System.out.println(UserFunction.getNameLengthThan3(user, new UserFunction()));
		user.setName("ab");
		System.out.println(UserFunction.getNameLengthThan3(user, new UserFunction()));
	}
}

运行结果:

true
false



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值