java8--函数式接口

java8中内置了很多接口 ,它们都标记了@FunctionalInterface注解,FunctionalInterface是个无任何抽象方法的接口。Java8试图阐明,当一个接口被标记上FunctionalInterface,那么它应该被开发者注意:这是个函数式接口,应该用lambda表示其实例对象。

 

Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface FunctionalInterface {}

Java8中内置的函数式接口位于 rt.jar的java.util.function包中,主要有: 

Consumer  消费者,消费一个东西,没有返回值    void accept(T t)       
Predicate  谓词(断言) 处理一个东西,返回布尔值    boolean test(T t)       
Function  处理一个东西,有返回值     R  apply(T t)         
Supplier   供应 函数提供(返回)一个值       T get();    

 

Consumer 接口衍生了以下等接口

IntConsumer   消费(传入)一个int参数
DoubleConsumer  消费(传入)一个double参数
longConsumer  消费(传入)一个long参数

 

 

Predicate 接口衍生了以下等接口

IntPredicate    传入一个int参数,返回真假
DoublePredicate  传入一个double参数,返回真假
LongPredicate    传入一个long参数,返回真假

 

 

Function  接口衍生了以下等接口

IntFunction  
DoubleFunction
LongFunction
ToIntFunction 
IntToDoubleFunction
IntToLongFunction

 

 

Supplier   接口衍生了以下等接口

IntSupplier  函数提供(返回)一个int值
DoubleSupplier 函数提供(返回)一个double值
LongSupplier  函数提供(返回)一个long值

这些jdk8中内置的函数式接口,我们可以直接拿来使用(采用lambda表达式) 

 

DoubleConsumer c1= (a)->{System.out.println(a+1);};
DoubleConsumer c2= (a)->{System.out.println(a*2);};
 c1.accept(3);//输出 4 
 c1.andThen(c2).accept(3);//输出4 6  


 IntFunction  f=(a)->{return a+1l;};  
  DoubleFunction f2=(a)->{return a+2d;};         
  System.out.println(f.apply(10)); 
  System.out.println(f2.apply(10));

 

IntPredicate  f5=(a)->{return true;};
 System.out.println(f5.test(10));

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值