博客详情

java8--函数式接口 (原创)

作者: 朝如青丝暮成雪
发布时间:2018-10-24 17:20:42  文章分类:java8   阅读(982)  评论(0)

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));


。。。。



关键字:  java8  函数式接口
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号