java函数式接口报错static_java 函数式接口

java 函数式接口

java 函数式接口

函数式接口

含义:

只有一个抽象方法的接口,这个接口就是函数式接口

函数式接口是Lambda表达式的适用前提

格式说明:

检查一个接口是否是函数式接口,可以使用一个注解

@functionalInterface

效果:

如果不是函数式接口则编译报错

函数:

处理数据的逻辑,定义参数和处理参数的代码,可能能返回处理的结果

单独存在的一个处理逻辑,不应该从属于热别的主体(不应该属于某个类、不应该属于某个对象)

定义的角度来说,医改定义在文件中,而非某个类或者接口中

java语言只有方法没有函数

弊端:只传递原始数据或者结果数据,无法传递对于数据的处理方式;没有所谓的函数的类型,无法声明函数的引用

java的解决方案:

使用函数式接口来解决

具体:

使用几个接口讲方法包起来,认为包起来的方法就是一个函数,借口就是函数的类型,有了这个类型之后就可以声明该类型含税引用

使用接口的实现类对象,来表达函数的具体内容认为成函数类型的对象

这种结局方案称为函数式编程

原因:

每次想表达函数是,自己定义一个接口,用来表达函数的类型等,太麻烦

而且很多函数都是同一类型,且经常使用,不希望每次都要自己定义

jdk就将这些常用的函数类型,帮我们定义出来了

罗列

Consumer : 消费接口

void accept(T t)

Supplier: 供给形接口

T get()

Function: 函数型接口

R apply(T t)

Predicate : 断言型接口

boolean tst(T t)

消费型接口

Consumer : 消费接口

void accept(T t)

其中T表示该函数要消费的内容

消费:获得这个内容使用,之后就没有这个数据了

方法引用

f52db3a4c456a494c6e6dc75189b9b07.png

供给型接口

f6f7dffcd878792172bca22e7c238644.png

public static void main(String[] args) {

// () ->new Random().nextInt(100) + 1) 相当于重写了Supplier的get方法,

//方法内容是返回new Random().nextInt(100) + 1的值

List list = creatList(10, () -> new Random().nextInt(100) + 1);

System.out.println(list);

}

public static List creatList(int n,Supplier sup){

List list = new ArrayList();

while(list.size() < n) {

list.add(sup.get());

}

return list;

}

函数型接口

510985ddd02276abf1ce9439bd2ecbf6.png

断言型接口

Predicate : 断言型接口

boolean tst(T t)

c009e7cf3bd3a72b2cf55e95efeb9d02.png

java 函数式接口相关教程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值