四大内置核心函数式接口
函数式接口 | 参数类型 | 返回类型 | 用途 |
---|---|---|---|
Consumer 消费型接口 | T | void | 对类型为T的对象应用操 作,包含方法: void accept(T t) |
Supplier 供给型接口 | 无 | T | 返回类型为T的对象,包 含方法:T get() |
Function 函数型接口 | T | R | 对类型为T的对象应用操 作,并返回结果。结果 是R类型的对象。包含方 法:R apply(T t) |
Predicate 断定型接口 | T | boolean | 确定类型为T的对象是否 满足某约束,并返回 boolean 值。包含方法 boolean test(T t) |
其他接口
函数式接口 | 参数类型 | 返回类型 | 用途 |
---|---|---|---|
BiFunction<T, U, R> | T, U | R | 对类型为 T, U 参数应用操作,返回 R 类型的结果。包含方法为R apply(T t, U u); |
UnaryOperator<T>(Function子接口) | T | T | 对类型为T的对象进行一元运算,并返回T类型的结果。包含方法为T apply(T t); |
BinaryOperator<T>(BiFunction 子接口) | T, T | T | 对类型为T的对象进行二元运算,并返回T类型的结果。包含方法为T apply(T t1, T t2); |
BiConsumer<T, U> | T, U | void | 对类型为T, U 参数应用操作。包含方法为void accept(T t, U u) |
ToIntFunction<T> ToLongFunction<T> ToDoubleFunction<T> | T | int long double | 分 别 计 算 int 、 long 、double、值的函数 |
IntFunction<R> LongFunction<R> DoubleFunction<R> | int long double | R | 参数分别为int、long、double 类型的函数 |
测试代码
TestFourFunc.java
package java8.test;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
import org.junit.Test;
public class TestFourFunc {
/**
* Java8中内置4大函数接口
* 1.Consumer<T>:消费型接口
* 方法:void accept(T t);
* 功能:给一个参数,完成一项操作,没有返回值。有去无回
* 2.Supplier<T>:供给型
* 方法:T get();
* 功能:根据泛型参数,返回一个值给调用者。无中生有
* 3.Function(T,R):函数型接口;
* 方法:R apply(T t);
* 功能:根据参数T,返回一个类型R。
* 4.Predicate<T>:断言型接口
* 方法:boolean test(T t);
* 功能:对输入参数T,进行判断操作,返回一个boolean值
*/
/**
* 1.消费型接口:Consumer
* java.util.function Interface Consumer<T>:
* 参数类型
* T - 操作输入的类型
* Functional Interface:
* 这是一个功能界面,因此可以用作lambda表达式或方法引用的赋值对象。
*/
@Test
public void testConsumer() {
/*
* void accept(T t)
* 对给定的参数执行此操作。
* 参数
* t - 输入参数
*/
Consumer<String> con = (str) -> System.out.println("你好," + str);
con.accept("消费型接口~");
}
/**
* 2.生产型接口:Supplier
* @FunctionalInterface
* public interface Supplier<T>
* 代表结果供应商。
* 没有要求每次调用供应商时都会返回新的或不同的结果。
* 这是一个functional interface的功能方法是get() 。
* 从以下版本开始:
* 1.8
*/
@Test
public void testSupplier() {
/*
* T get()
* 获得结果。
*/
Supplier<String> sup = () -> "生产型接口~";
String string = sup.get();
System.out.println(string);
}
/**
* Function<T,R>:函数型接口
* java.util.function
* Interface Function<T,R>
* 参数类型
* T - 函数输入的类型
* R - 函数的结果类型
*/
@Test
public void testFunction() {
/**
* R apply(T t)
* 将此函数应用于给定的参数。
* 参数
* t - 函数参数
* 结果
* 功能结果
*/
Function<Integer,String> func = (str) -> str + ",函数性接口~";
String apply = func.apply(5);
System.out.println(apply);
}
/**
* Predicate<T>:断言型接口
* java.util.function
* Interface Predicate<T>
* 参数类型
* T - T输入的类型
* Functional Interface:
* 这是一个FunctionInterface,因此可以用作lambda表达式或方法引用的赋值对象。
*/
@Test
public void testPredicate() {
/**
* boolean test(T t)
* 在给定的参数上评估这个谓词。
* 参数
* t - 输入参数
* 结果
* true如果输入参数匹配谓词,否则为 false
*/
Predicate<Integer> pre = (a) -> a > 0;
boolean test = pre.test(10);
System.out.println("10 > 0 : " + test);
}
}
微信公众号:JavaWeb架构师
其它
- 源码下载
关注下方公众号,回复:Java8.code
-
欢迎加入交流群:451826376
-
更多信息:www.itcourse.top
网友评论