java8的函数式接⼝的好处_Java8最重要的四种函数式接⼝及
其作⽤
可以这么说,函数式接⼝中只能有⼀个抽象⽅法,可以有实现的静态⽅法;
@FunctionalInterface这个只是⼀个编译级的注解,⽤来检测你编写的函数式接⼝是否有错的
@FunctionalInterface
interface TestInterface {
public final static String value ="111";
static void staticFuc(){
}
void Test();
}
他共有四种核⼼的函数式接⼝
⼀、功能性接⼝:Function  接收⼀个功能参数t,并返回⼀个功能结果R。
package java.util.function;
import java.util.Objects;
@FunctionalInterface
public interface Function{
R apply(T t);
default Functioncompose(Function super V, ? extends T> before) {
return (V v) -> apply(before.apply(v));
}
default FunctionandThen(Function super R, ? extends V> after) {
return (T t) -> after.apply(apply(t));
}
static Functionidentity() {
return t -> t;
}
}
举例:可以简写为  Functionfunction = (str) -> "hello,"+str;
Functionfunction = (str) ->{
return "hello,"+str;
};
String str = function.apply("Tassel");
System.out.println(str);
⼆、断⾔性接⼝:Predicate  主要⽤到test⽅法其中参数t为输⼊参数,如果输⼊参数符合断⾔则返回true,否则false package java.util.function;
import java.util.Objects;
@FunctionalInterface
public interface Predicate{
boolean test(T t);
default Predicateand(Predicate super T> other) {
return (t) -> test(t) && st(t);
}
default Predicatenegate() {
return (t) -> !test(t);
}
default Predicateor(Predicate super T> other) {
return (t) -> test(t) || st(t);
sql语句实现的四种功能}
static PredicateisEqual(Object targetRef) {
return (null == targetRef)
Objects::isNull
:
object -> targetRef.equals(object);
}
}
举例⼦:下⾯的等价于"Hello".equalsIgnoreCase(t) //t:输⼊参数
Predicatepredicate = "Hello"::equalsIgnoreCase;
System.out.st("Hello"));
三、供给性接⼝:Supplier 不接收任何参数 但有返回值
@FunctionalInterface
public interface Supplier{
T get();
}
Supplier supplier = "Hello"::toLowerCase;
System.out.println(supplier);
四、消费性接⼝:Consumer只接收⼀个参数t,但是没有返回值。package java.util.function;
import java.util.Objects;
@FunctionalInterface
public interface Consumer{
void accept(T t);
default ConsumerandThen(Consumer super T> after) { quireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
}
Consumerconsumer = System.out ::println;
consumer.accept("1111");
ArrayListarrayList = new ArrayList<>();
Consumerconsumer = (e)-> e.add("111");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。