Java新特性:函数式接口
来源:互联网 发布:套路网络用语 编辑:程序博客网 时间:2024/06/06 16:29
相关文章:
1.Lambda表达式
http://blog.csdn.net/youyou1543724847/article/details/52733395
2流
http://blog.csdn.net/youyou1543724847/article/details/52733477
3.函数式接口
http://blog.csdn.net/youyou1543724847/article/details/52733660
4.接口新特性
http://blog.csdn.net/youyou1543724847/article/details/52733675
下文参照:
http://www.tuicool.com/articles/beA7V3
http://www.runoob.com/java/java8-functional-interfaces.html
什么是函数接口
函数接口是一种只有一个方法的接口,像这样地,函数接口可以隐式地转换成lambda表达式。
java相关的类
包概要:java.util.function
作为Comparator 和Runnable早期的证明,在JDK中已经定义的接口恰巧作为函数接口而与lambdas表达式兼容。同样方式可以在你自己的代码中定义任何函数接口或第三方库。
但有特定形式的函数接口,且广泛的,通用的,在之前的JD卡中并不存在。大量的接口被添加到新的java.util.function 包中。下面是其中的一些:
• Function
Interface Consumer< T>
An operation which accepts a single input argument and returns no result. Unlike most other functional interfaces, Consumer is expected to operate via side-effects.
接口表示一个接受单个输入参数并且没有返回值的操作。不像其他函数式接口,Consumer接口期望执行带有副作用的操作(译者注:Consumer的操作可能会更改输入参数的内部状态)。
Consumer接口中有2个方法,有且只有一个声明为accept(T t)的方法,接收一个输入参数并且没有返回值。
Predicate
Represents a predicate (boolean-valued function) of one argument.
接口表示一个接受单个输入参数并且返回值bool结果值(即判断输入的对象是否符合某个条件。)
当作为函数接口使用时,函数是指test()方法
除了test()方法是抽象方法以外,其他方法都是默认方法(译者注:在Java 8中,接口可以包含带有实现代码的方法,这些方法称为default方法)。可以使用匿名内部类提供test()方法的实现,也可以使用lambda表达式实现test()。
Interface Function< T,R>
Represents a function that accepts one argument and produces a result.
This is a functional interface whose functional method is apply(Object).
函数式接口实例
import java.util.Arrays;import java.util.List;import java.util.function.Predicate;public class Java8Tester { public static void main(String args[]){ List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); // Predicate<Integer> predicate = n -> true // n 是一个参数传递到 Predicate 接口的 test 方法 // n 如果存在则 test 方法返回 true System.out.println("输出所有数据:"); // 传递参数 n eval(list, n->true); // Predicate<Integer> predicate1 = n -> n%2 == 0 // n 是一个参数传递到 Predicate 接口的 test 方法 // 如果 n%2 为 0 test 方法返回 true System.out.println("输出所有偶数:"); eval(list, n-> n%2 == 0 ); // Predicate<Integer> predicate2 = n -> n > 3 // n 是一个参数传递到 Predicate 接口的 test 方法 // 如果 n 大于 3 test 方法返回 true System.out.println("输出大于 3 的所有数字:"); eval(list, n-> n > 3 ); } public static void eval(List<Integer> list, Predicate<Integer> predicate) { for(Integer n: list) { if(predicate.test(n)) { System.out.println(n + " "); } } }}
$ javac Java8Tester.java $ java Java8Tester输出所有数据:1 2 3 4 5 6 7 8 9 输出所有偶数:2 4 6 8 输出大于 3 的所有数字:4 5 6 7 8 9
总结:我觉得函数式接口的最大好处是结合lambda使用,使得函数也可以作为参数传递,同时,精简的lambda表达式使得整体的程序简单,清晰。
- Java新特性:函数式接口
- W3Cschool Java 8新特性----> 函数式接口
- java 8 新特性-函数式接口&lambda
- [Java]Java8新特性-lambda表达式/语法/函数式接口
- Java接口新特性
- Java8新特性函数式接口
- Java8 新特性 函数式接口
- JDK8新特性之函数式接口
- JDK8新特性之函数式接口
- Java新特性:接口新特性
- java 8 新特性(1.函数式接口 - Functional Interface)
- Java8 新特性之一---------Lambda表达式和函数式接口
- JDK8新特性:函数式接口@FunctionalInterface的使用说明
- JDK1.8新特性(三)函数式接口
- Java8新特性之 函数式接口FunctionalInterface详解
- JDK1.8新特性☞函数式接口测试
- Java8新特性Lambda表达式、函数式接口
- JAVA8新特性[第二季]-函数式接口
- 设计模式之单例模式
- cordova通过原生实现自定义功能
- 解析public static void main(String[] args)
- 剑指offer2-重建二叉树
- 面向对象_final关键字引入
- Java新特性:函数式接口
- 解除 GPU 进程(减少显卡占用)
- HDU 5658 CA Loves Palindromic (回文树)
- Oracle中的序列(sequence、自增字段)
- 欢迎使用CSDN-markdown编辑器
- spark Reparation和Coalesce 区别
- spring注解的好处
- 1.开发模式接入(微信公众号开发实战)
- JMS基础