四大函数式接口
函数式接口是什么?
如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口
函数式接口的实例可以通过 lambda 表达式、方法引用或者构造方法引用来创建。
如果我们在某个接口上声明了 @FunctionalInterface 注解,那么编译器就会按照函数式接口的定义来要求该接口
如果某个接口只有一个抽象方法,但我们并没有给该接口声明 @FunctionalInterface 注解,那么编译器依旧会将该接口看作是函数式接口
1:四大函数式接口:Consumer、Supplier、Function、Predicate
Function
开源码知道传入参数和返回类型 传入什么返回什么。
用匿名内部类new出函数式接口实现
lambda表达式简化
Predicate 传入泛型返回boolean类型
断定形接口
消费者接口
只有输入没有返回值
供给形接口
没有参数只有返回值
返回值类型为泛型。
1、consumer<T> 消费型接口,有入参,返回值为空
-
-
public interface Consumer<T> {
-
-
/**
-
* Performs this operation on the given argument.
-
*
-
* @param t the input argument
-
*/
-
void accept(T t);
-
}
例子:
-
package com.example.demo.java8;
-
-
import java.util.function.Consumer;
-
-
public class Java8InnerFunction {
-
-
public static void main(String[] args) {
-
Java8InnerFunction function=new Java8InnerFunction();
-
function.consumMoney(1000,x-> System.out.println("消费了:" x "元"));
-
}
-
-
public void consumMoney(int money, Consumer consumer){
-
consumer.accept(money);
-
}
-
}
2、Supplier<T> 提供型接口 空参但是有返回值
-
-
public interface Supplier<T> {
-
-
/**
-
* Gets a result.
-
*
-
* @return a result
-
*/
-
T get();
-
}
例子:
-
public static void main(String[] args) {
-
Java8InnerFunction function=new Java8InnerFunction();
-
int i = function.supplyRandomNum(() ->
-
(int) (Math.random() * 100);
-
);
-
System.out.println("获得的随机数是:" i);
-
}
-
-
public int supplyRandomNum(Supplier<Integer> supplier){
-
return supplier.get();
-
}
3、Function<T, R> 函数型接口 有入参 有返回值
-
-
public interface Function<T, R> {
-
-
/**
-
* Applies this function to the given argument.
-
*
-
* @param t the function argument
-
* @return the function result
-
*/
-
R apply(T t);
-
}
例子:计算一个数的10倍,并输出结果
-
package com.example.demo.java8;
-
-
import java.util.Random;
-
import java.util.function.Consumer;
-
import java.util.function.Function;
-
import java.util.function.Supplier;
-
-
public class Java8InnerFunction {
-
-
public static void main(String[] args) {
-
Java8InnerFunction function=new Java8InnerFunction();
-
-
int i1 = function.functionCompute(5, x -> x * 10);
-
System.out.println("计算后的结果值是:" i1);
-
}
-
-
public int functionCompute(int a,Function<Integer,Integer> function){
-
return function.apply(a);
-
}
-
}
4、Predicat<T> 断言型接口 返回真假
-
-
public interface Predicate<T> {
-
-
/**
-
* Evaluates this predicate on the given argument.
-
*
-
* @param t the input argument
-
* @return {@code true} if the input argument matches the predicate,
-
* otherwise {@code false}
-
*/
-
boolean test(T t);
-
}
例子:计算一个数是否比100大,并输出真假
-
public static void main(String[] args) {
-
Java8InnerFunction function=new Java8InnerFunction();
-
-
boolean b = function.predicateCompare(101, x -> x > 100);
-
System.out.println("101比100大吗:" b);
-
}
-
-
-
public boolean predicateCompare(int x,Predicate<Integer> predicate){
-
return predicate.filter(x);
-
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghegie
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13