Java8 新特性
Java8新特性相关学习
一、内建函数式接口
1. 功能型函数式接口
1.1 接口定义 (有参数,有返回值)
@FunctionalInterface public interface Function<T, R> { R apply(T t); //... }
1.2 接口使用
import java.util.function.Function; public class MyTempTest { // 功能性函数式接口 @Test public void test01(){ //补充: 实例方法的引用 实例::方法 Function<String,Boolean> fun = "**Hello" :: startsWith; System.out.println(fun.apply("**")); } }
2. 消费型函数式接口
1.1 接口定义 (有参数,没有返回值)
只能进行数据处理的操作,而没有任何返回;
@FunctionalInterface public interface Consumer<T> { void accept(T t); }
2.1 接口使用
import java.util.function.Consumer; public class MyTempTest { // 消费型函数式接口 @Test public void test02(){ Consumer<String> con = System.out :: println; con.accept("hello world"); } }
3. 供给型函数式接口
3.1 接口定义 (没有参数,有返回值)
例如,在String类中提供有转小写方法,这个方法没有接收参数,但是有返回值。public String toLowerCase();
@FunctionalInterface public interface Supplier<T> { T get(); }
3.1 接口使用
import java.util.function.Supplier; public class MyTempTest { // 供给型函数式接口 @Test public void test03(){ Supplier<String> sup = "ABC" :: toLowerCase; System.out.println(sup.get()); } }
4. 断言型函数式接口
4.1 接口定义 (进行判断处理)
例如:String类中有一个equalsIgnoreCase() 方法
@FunctionalInterface public interface Predicate<T> { boolean test(T t); }
4.2 接口使用
import java.util.function.Predicate; /** * @author: Linwei * @date 2021/5/29 * @Description: */ public class MyTempTest { // 断言型函数式接口 @Test public void test04(){ Predicate<String> pre = "HELLO" :: equalsIgnoreCase; System.out.println(pre.test("hello")); } }
边系鞋带边思考人生.