重温java知识(三十一、内建函数式接口:概念及其简单使用)

在方法引用的操作过程中,我们可以发现,不管如何进行操作,对于可能出现的函数式接口的方法最多只有4类:

  • 有参数有返回值
  • 有参数无返回值
  • 无参数有返回值
  • 判断真假
    所以,为了简化定义以及操作的统一,从JDK8开始,Java提供了一个新的开发包:java.util.function,在此包中提供了许多内置的函数式接口。

1、使用功能型函数式接口的例子【该接口的主要功能是进行指定参数的接收并且可以返回处理结果】【该例子将引用String类中判断是否以指定字符串开头的方法:public boolean startsWith(String str)】:

package com.mydemo;


public class BuiltinFunctionalInterfaceDemo {

    public static void main(String[] args) {

        // 引用startWith()方法,该方法将接收一个String型参数,并返回Boolean类型
        Function<String, Boolean> function = "ALICY"::startsWith;

        // 调用方法
        System.out.println(function.apply("A"));    // true
//        System.out.println(function.apply("a"));    // false

    }
}

@FunctionalInterface
//public interface Function<P, R> {   // 定义功能型接口,设置参数与返回结果
interface Function<P, R> {          // 定义功能型接口,设置参数与返回结果
    public R apply(P p);            // 接收参数并返回处理结果

    /**
     * 使用功能型函数式接口,必须保证有一个输入参数并且有返回值,
     * 由于映射的是String类的startWith()方法,
     * 所以此方法使用时必须传入参数(String型),同时要返回一个判断结果(boolean型)。
     */
}

2、使用消费型函数式接口的例子【该接口的主要功能是进行参数的接收与处理,但是不会有返回结果】【该例子将引用System.out.println()方法进行内容输出】:

package com.mydemo;


public class BuiltinFunctionalInterfaceDemo {

    public static void main(String[] args) {

        // System是一个类,out是里面的成员属性,println()是out对象中的方法
        Consumer<String> consumer = System.out::println;

        consumer.accept("啥玩意啊,消费型函数式接口。。。");

    }
}

@FunctionalInterface
//public interface Consumer<P> {    // 消费型函数式接口,只需设置参数类型即可
interface Consumer<P> {          // 消费型函数式接口,只需设置参数类型即可

    public void accept(P p);     // 接收一个参数,并且不需要返回处理结果,适用于引用类型操作

}
运行结果:
啥玩意啊,消费型函数式接口。。。

3、使用供给型函数式接口的例子【该接口的主要功能是方法不需要接收参数,并且可以进行数据返回。】【该例子将引用String类中的字符串转小写方法:public String toLowerCase()】:

package com.mydemo;


public class BuiltinFunctionalInterfaceDemo {

    public static void main(String[] args) {

        Supplier<String> supplier = "ABCDEFG"::toLowerCase;

        System.out.println(supplier.get());

    }
}

@FunctionalInterface
//public interface Supplier<R> {    // 供给型函数式接口,设置返回值类型
interface Supplier<R> {     // 供给型函数式接口,设置返回值类型

    public R get();         // 不接收参数,但是会返回数据

}
运行结果:
abcdefg

4、使用断言型函数式接口的例子【该接口的主要功能是进行判断操作,本身需要接收一个参数,同时会返回一个boolean结果。】【该例子将引用String类中的忽略大小写比较方法:public boolean equalsIgnoreCase(String str)】:

package com.mydemo;


public class BuiltinFunctionalInterfaceDemo {

    public static void main(String[] args) {

        // equalsIgnoreCase()方法需要接收一个字符串数据,
        // 并且与当前String类对象内容进行比较
        Predicate<String> predicate = "qwer"::equalsIgnoreCase;

        // 判断调用
        System.out.println(predicate.test("QWER"));

    }
}

@FunctionalInterface
//public interface Predicate<P> {    // 断言型函数式接口,需要设置判断的数据类型
interface Predicate<P> {        // 断言型函数式接口,需要设置判断的数据类型

    public boolean test(P p);   // 逻辑判断

}
运行结果:
true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值