常用的内建式函数式接口

Java 8 中引进了新的一些函数式接口,函数式接口可以对现有的函数友好地支持 lambda。
先来看几个涉及概念:
1.方法引用:结合函数式接口使用

·引用静态方法:类名::静态方法名
·引用某个对象方法:实例化对象::普通方法
·引用某个特定类的方法:类名::普通方法
·引用构造方法:类名::new

2.可变参数:

方法名(数据类型...变量名){方法体}
其中...相当于一个数组,可变参数中可以已数组为参数,数据个数任意指定,可以为0个。
注意点:如果要传递多种类型的参数,可变参数要写在最后,例如:方法名(String str, char ch, int...data){},
一个方法只能设置一个可变参数。

常用的内建函数式接口:在java.util.function包中,有以下几个较为重要的接口:
1.功能型函数式接口:

@FunctionalInterface
public interface Function<T,R>{
   public R apply(T t)
}

使用:

	@Test
    public void function() {
    	// 利用startsWith()方法判断是否以指定内容开头
        Function<String, Boolean> fun = "**hello" :: startsWith;
        System.out.println(fun.apply("**"));
    }

结果:true
2.消费型函数式接口:只能进行数据的处理操作,没有返回值。

@FunctionalInterface
public interface Consumer<T>{
    public void accept(T t)
}

使用:

	@Test
    public void consumer() {
    	// 输出
        Consumer<String> consumer = System.out :: println;
        consumer.accept("hello world");
    }

结果:hello world
3.供给型函数式接口:

@FunctionalInterface 
public interface Supplier<T>{
    public T get();
}

使用:

	@Test
    public void supplier(){
    	// toLowerCase()方法的调用
        Supplier<String> su = "HELLO WORLD" :: toLowerCase;
        System.out.println(su.get());
    }

结果:hello world
4.断言型函数式接口:进行判断处理

@FunctionalInterface 
public interface Predicate<T>{
    public boolean test(T t)
}

使用:

	@Test
    public void predicate(){
    	// equalsIgnoreCase()方法的调用
        Predicate<String> pre = "Hello" :: equalsIgnoreCase;
        System.out.println(pre.test("HELLO"));
    }

结果:true

发布了87 篇原创文章 · 获赞 50 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_40178464/article/details/90137674