您的位置:首页 > 编程语言 > Java开发

Java8新特性 -- 四大内置的核心函数式接口

2017-11-23 22:39 615 查看
可以把这些函数式接口作为方法的参数。

1.0 核心内置函数式接口一: 消费型接口
@FunctionalInterface
public interface Consumer<T> {

 void accept(T t);

default Consumer<T> andThen(Consumer<? super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
}

2.0 核心内置函数式接口二: 供给型接口

@FunctionalInterface
public interface Supplier<T> {

    T get();
}

3.0 核心内置函数式接口三: 函数型接口

@FunctionalInterface
public interface Function<T, R> {

 R apply(T t);

default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
Objects.requireNonNull(before);
return (V v) -> apply(before.apply(v));
}

default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
Objects.requireNonNull(after);
return (T t) -> after.apply(apply(t));
}

static <T> Function<T, T> identity() {
return t -> t;
}
}

4.0 核心内置函数式接口四: 断言型接口

@FunctionalInterface
public interface Predicate<T> {

boolean test(T t);

default Predicate<T> and(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> test(t) && other.test(t);
}

default Predicate<T> negate() {
return (t) -> !test(t);
}

default Predicate<T> or(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> test(t) || other.test(t);
}

static <T> Predicate<T> isEqual(Object targetRef) {
return (null == targetRef)
? Objects::isNull
: object -> targetRef.equals(object);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: