java8新特性函数式接口_Java8新特性-函数式接口

1. 什么是函数式接口:

接口中只有一个抽象方法,可以用@FunctionalInterface注解标记在类上,该注解会检查此类是否满足函数式接口的要求,比如:

@FunctionalInterface

public interface Function {

/**

* Applies this function to the given argument.

*

* @param t the function argument

* @return the function result

*/

R apply(T t);

2. 函数式接口的优势:

可以把函数作为参数传递给另一个函数,也就是所谓的高阶函数。这个特点很明显,一个函数作为参数,下面的例子会体现出来的。

引用透明,即函数运行的结果只依赖于输入的参数,而不依赖于外部状态。对于刚接触的人来说,体会可能不那么深,知道即可。

书写简单,简化代码量,这点在实际的开发中很有好处,往往一两行代码能够解决很复杂的场景需求,集合操作行云流水。

3. 函数式接口的使用:

下面列举几个开发中常用且简单的内置函数式接口,能够极大的提高开发效率,减少无效代码,希望大家能够多多用起来。

/**

* Consumer 消费性接口

* void accept(T t)

*

* Supplier 供给型接口

* T get()

*

* Function 函数式接口

* R apply(T t)

*

* Predicate 断言型接口

* boolean test(T t)

* @author pc

*

*/

public class LamdaTest {

@Test

public void testPredicate() {

int res = predicate("123456", (str)->str.contains("123"));

System.out.println(res);

}

public void tesFunction() {

String function = function("i am happy", (strOrigin)->strOrigin.substring(2));

System.out.println(function);

}

public void testSupply() {

List res=supply(10, ()->(int)(Math.random()*1000));

}

public void testConsume() {

consume(1000, money->System.out.println("consume money:"+money));

}

/**

* 断言型接口 有入参返回布尔

* @param str

* @param predicate

* @return 符合条件1 否则 0

*/

public int predicate(String str,Predicate predicate) {

if( predicate.test(str)) {

return 1;

}

return 0;

}

/**

* 函数式接口 有入参和出参

* @param str

* @param function 对str 进行具体的处理函数

* @return 处理后的字符

*/

public String function(String str,Function function) {

return function.apply(str);

}

/**

* 供给型接口 只有出参

* @param num

* @param supplier

* @return

*/

public List supply(Integer num,Supplier supplier) {

List res=new ArrayList();

for (int i = 0; i

Integer integer = supplier.get();

res.add(integer);

}

return res;

}

/**

* 消费型接口 只有入参

* @param money

* @param consumer

*/

public void consume(double money,Consumer consumer) {

consumer.accept(money);

}

}

除了上面的demo中体现出来的4个接口,Java8还有很多其他的函数式接口,通常都是继承于以上四大类接口,如有需要,可直接查看其子类,找到符合需求的接口。下面的图简单列出几个,仅供参考:

91d9473ea055d6df18fa7697e5d46d67.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值