java基础---->java8中的函数式接口

时间:2023-03-08 21:26:46
java基础---->java8中的函数式接口

  这里面简单的讲一下java8中的函数式接口,Function、Consumer、Predicate和Supplier。

函数式接口例子

一、Function:接受参数,有返回参数

package com.linux.huhx.function;

import java.util.function.Function;

public class FunctionDemo {

  private static int operateValue(int value, Function<Integer, Integer> function) {
return function.apply(value);
} private static int operateValue(int value, Function<Integer, Integer> srcFunc, Function<Integer, Integer> destFunc) {
return srcFunc.andThen(destFunc).apply(value);
} public static void main(String[] args) {
int value = ;
int innerResult = operateValue(value, new Function<Integer, Integer>() {
@Override
public Integer apply(Integer t) {
return + t;
}
});
System.out.println(innerResult); // int lambdaResult = operateValue(value, t -> t + );
System.out.println(lambdaResult); // int andThenResult = operateValue(value, val -> val + , val -> val + );
System.out.println(andThenResult); //
}
}

二、Consumer:接受参数,没有返回

package com.linux.huhx.function;

import java.util.function.Consumer;

public class ConsumerDemo {

  private static void printValue(String value, Consumer<String> consumer) {
consumer.accept(value);
} public static void main(String[] args) {
printValue("huhx", s -> System.out.println(s.toUpperCase())); // HUHX
}
}

三、Predicate:接受参数,返回boolean

package com.linux.huhx.function;

import java.util.function.Predicate;

public class PredicateDemo {

  private static boolean predicateValue(int value, Predicate<Integer> predicate) {
return predicate.test(value);
} public static void main(String[] args) {
System.out.println(predicateValue(, x -> x >= )); // false
}
}

四、Supplier:不接受参数,有返回值

package com.linux.huhx.function;

import java.util.function.Supplier;
import org.springframework.util.StringUtils; public class SupplierDemo { private static String getOrDefault(String value, Supplier<String> supplier) {
return StringUtils.isEmpty(value) ? supplier.get() : value;
} public static void main(String[] args) {
String name = "";
System.out.println(getOrDefault(name, () -> "huhx")); // huhx
}
}

友情链接