让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)

简介: 本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。

package unittest;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

@FunctionalInterface
interface IFuction1

{
public abstract P uppCase();
}
@FunctionalInterface
interface IFuction2

{
public abstract P uppCase(P p);
}
@FunctionalInterface
interface IFuction3{
public abstract R trans(P p);
}
public class TestLocal{
public static void main(String[] args) {
//利用方法引用的概念可以位一个方法定义多个名字,但是要求必须是函数式接口.

    IFuction1<String> ifunction1  = "avc" :: toUpperCase;//    public String toUpperCase() {
    String str1 = ifunction1.uppCase();//实例对象::普通方法(不带参数)
    System.out.println(str1);

    IFuction2<String> ifunction2  = String :: toUpperCase; //    public String toUpperCase() {
    String str2 = ifunction2.uppCase("avc");//类名称::普通方法(带参数)
    System.out.println(str2);

    IFuction3<Integer,String> ifunction3  = String :: valueOf;//类名称::static方法(带参数) //    public static String valueOf(int i) {
    String str3 = ifunction3.trans(123456);
    System.out.println(str3.length());
    //内建函数式接口
    //1.功能型内建函数式接口:有参数 有返回值
    Function<String,Boolean> fun = "abc123"::startsWith;
    System.out.println("1功能型内建函数式接口:" + fun.apply("abc"));

    //2.消费型内建函数式接口:有参数 无返回值
    Consumer<String> con = System.out::println;
    con.accept("2消费型内建函数式接口:avc");
    //3.供给型内建函数式接口:无参数 有返回值
    Supplier<String> supplier = "abc"::toUpperCase;
    System.out.println("3供给型内建函数式接口:" + supplier.get());
    //4.断言型内建函数式接口:无参数 有返回值
    Predicate<String> predicate = String::isEmpty;
    System.out.println("4断言型内建函数式接口:" + predicate.test("a"));

    Predicate<String> fun_predicate = "abc123"::startsWith;
    System.out.println("5功能_断言型内建函数式接口:" + fun_predicate.test("abc"));
}

}

目录
相关文章
|
1月前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
106 53
|
3月前
|
Java
java基础(11)函数重载以及函数递归求和
Java支持函数重载,即在同一个类中可以声明多个同名方法,只要它们的参数类型和个数不同。函数重载与修饰符、返回值无关,但与参数的类型、个数、顺序有关。此外,文中还展示了如何使用递归方法`sum`来计算两个数之间的和,递归的终止条件是当第一个参数大于第二个参数时。
34 1
java基础(11)函数重载以及函数递归求和
|
2月前
|
Java 编译器 C语言
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
29 3
|
3月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
3月前
|
编解码 安全 Java
jdk8新特性-接口和日期处理
jdk8新特性-接口和日期处理
|
Java
JAVA方法的定义
JAVA方法的定义
95 0
|
6月前
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
43 1
|
7月前
|
存储 Java
Java数组与带参数方法:定义、调用及实践
Java数组与带参数方法:定义、调用及实践
79 1
|
7月前
|
存储 Java
Java中带返回值方法的定义与调用技术
Java中带返回值方法的定义与调用技术
106 1
|
7月前
|
Java
Java一分钟之-方法定义与调用基础
【5月更文挑战第8天】本文介绍了Java编程中的方法定义和调用,包括基本结构、常见问题和避免策略。方法定义涉及返回类型、参数列表和方法体,易错点有返回类型不匹配、参数错误和忘记返回值。在方法调用时,要注意参数传递、静态与非静态方法的区分,以及重载方法的调用。避免错误的策略包括明确返回类型、参数校验、理解值传递、区分静态和非静态方法以及合理利用重载。通过学习和实践,可以提升编写清晰、可维护代码的能力。
231 0