java函数式编程
2021-09-15 14:28:02 0 举报
AI智能生成
java函数式编程
作者其他创作
大纲/内容
概念
什么是函数式编程?
函数式编程是一种编程的方法论,主要是将行为编写成一个个的函数。
什么是函数?
函数就是对输入的值进行处理,返回另外的值。
什么是Lambda表达式?
在Java 8 中引入的Labmda表达式是函数式编程的一种实现。
实现
@FunctionalInterface函数式接口
定义
接口有且仅有一个抽象方法
接口允许定义静态方法
接口允许定义默认方法
接口允许java.lang.Object中的public方法
JDK自带了一些有用的函数式接口
java.lang.Runnable
java.awt.event.ActionListener
java.util.Comparator
java.util.concurrent.Callable
java.util.function包下的接口,如Consumer、Predicate、Supplier等
实现方式
匿名内部类实现方式
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("我也是runnable实例");
}
});
@Override
public void run() {
System.out.println("我也是runnable实例");
}
});
Lambda表达式实现方式
Thread thread1 = new Thread(() -> System.out.println("我是runnable实例"));
Lambda表达式
格式
parameter(参数) -> expression body(函数主体)
不包含参数的格式
Runnable noArguments = () -> System.out.println("Hello World");
只包含一个参数,并可以省略括号
ActionListener oneArgument = event -> System.out.println("button clicked");
Lambda的主体是一段代码块
Runnable multiStatement = () -> { System.out.print("Hello"); System.out.println(" World"); };
多个参数
BinaryOperator add = (x, y) -> x + y;
显式指定参数的类型
BinaryOperator addExplicit = (Long x, Long y) -> x + y;
方法引用
List<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("猴六");
list.stream().forEach(System.out::println);
list.add("张三");
list.add("李四");
list.add("王五");
list.add("猴六");
list.stream().forEach(System.out::println);
有三种方法可以被引用
静态方法
实例方法
使用new的构造函数方法如:(TreeSet::new)
扩展
泛型
Funciton.java
从apply方法可以看出,泛型类声明的T、R分别表示apply方法的入参和返参的类型
1、before的入参为V,返参T
2、apply方法入参T,返参R
3、正好组成返回对象Funciton<V,R>
除了编写stream或一些jdk自带的函数式接口时用的函数式编程,在写其他代码时,怎样函数式编程?
哈哈,完整的写法还没有实践过,应该是需要和链式编程结合起来更加完美,写了一个例子
0 条评论
下一页