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"));
    }
}

 

posted @ 2021-05-29 14:30  穷苦书生  阅读(41)  评论(0编辑  收藏  举报