Java学习总结:25

内建函数式接口

对于可能出现的函数式接口的方法最多只有4类:有参数有返回值、有参数无返回值、无参数有返回值、判断真假。
为了简化开发者的定义以及实现操作的统一,Java提供了一个新的开发包:java.util.function,并且在这个包中提供了以下4个核心的函数式接口。

1.功能型接口(Function)

接口定义如下:

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

主要作用:此接口需要接收一个参数,并且返回一个处理结果。

例:使用功能型函数式接口。本程序将利用Function接口引用,String类“public boolean startsWith(String str)”方法

package Project.Study.BuiltInFunctionalInterface;
import java.util.function.*;

public class Test1 {
    public static void main(String args[]){
        Function<String,Boolean>fun="Hello World"::startsWith;
        //public boolean startsWith(String prefix, int toffset)方法
        //startsWith() 方法用于检测字符串是否以指定的前缀开始。
        System.out.println(fun.apply("H"));
        System.out.println(fun.apply("e"));
        System.out.println(fun.apply("ll"));
    }
}
//结果:
//true
//false
//false

2.消费接口(Consumer)

接口定义如下:

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

主要作用:此接口只是负责接收数据(引用数据时不需要返回),并且不返回处理结果。

例:使用消费型接口。

package Project.Study.BuiltInFunctionalInterface;
import java.util.function.Consumer;

public class Test2 {
    public static void main(String args[]){
        Consumer<String>cons=System.out::println;
        cons.accept("Hello World");
    }    
}
//结果
//Hello World

本程序利用消费性接口接收了,System.out.println()方法的引用,此方法定义中需要接收一个String型数据,但是不会返回任何结果。

3.供给型接口(Supplier)

接口定义如下:

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

主要作用:此接口不接收参数,但是可以返回结果。

例:供给型接口。本程序使用String类的toUpperCase()方法(public String toUpperCase())。

package Project.Study.BuiltInFunctionalInterface;
import java.util.function.Supplier;

public class Test3 {
    public static void main(String args[]){
        Supplier<String>sup="Hello World"::toUpperCase;
        //toUpperCase的意思是将所有的英文字符转换为大写字母,只对英文字母有效,对除了A~Z和a~z的其余字符无任何效果
        System.out.println(sup.get());}
}
//结果
//HELLO WORLD

4.断言型接口(Predicate)

接口定义如下:

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

主要作用:进行判断使用

例:断言型接口。本程序将引用String类中的equalsIgnoreCase()方法(public boolean equalsIgnoreCase(String str))。

package Project.Study.BuiltInFunctionalInterface;
import java.util.function.Predicate;

public class Test4 {
    public static void main(String args[]){
        Predicate<String>pre="Hello World"::equalsIgnoreCase;
        //执行忽略大小写的比较,当比较两个字符串时,它会认为A-Z和a-z是一样的
        System.out.println(pre.test("HELLO WORLD"));
    }
}
//结果:
//true
发布了49 篇原创文章 · 获赞 25 · 访问量 1523

猜你喜欢

转载自blog.csdn.net/weixin_45784666/article/details/104956600
今日推荐