让星星⭐月亮告诉你,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"));
}

}

目录
相关文章
|
9月前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
541 211
|
11月前
|
SQL JSON 安全
Java 8 + 中 Lambda 表达式与 Stream API 的应用解析
摘要:本文介绍了Java 8+核心新特性,包括Lambda表达式与Stream API的集合操作(如过滤统计)、函数式接口的自定义实现、Optional类的空值安全处理、接口默认方法与静态方法的扩展能力,以及Java 9模块化系统的组件管理。每个特性均配有典型应用场景和代码示例,如使用Stream统计字符串长度、Optional处理Map取值、模块化项目的依赖声明等,帮助开发者掌握现代Java的高效编程范式。(150字)
211 1
|
SQL Rust Java
怎么理解Java中的lambda表达式
Lambda表达式是JDK8引入的新语法,用于简化匿名内部类的代码写法。其格式为`(参数列表) -&gt; { 方法体 }`,适用于函数式接口(仅含一个抽象方法的接口)。通过Lambda表达式,代码更简洁灵活,提升Java的表达能力。
343 4
|
Java 编译器 API
Java Lambda 表达式:以 Foo 接口为例深入解析
本文深入解析了 Java 8 中 Lambda 表达式的用法及其背后的函数式接口原理,以 `Foo` 接口为例,展示了如何通过简洁的 Lambda 表达式替代传统匿名类实现。文章从 Lambda 基本语法、函数式接口定义到实际应用层层递进,并探讨默认方法与静态方法的扩展性,最后总结常见误区与关键点,助你高效优化代码!
317 0
|
Java
JAVA方法的定义
JAVA方法的定义
303 0
|
存储 JSON Java
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
343 25
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
216 1
|
存储 Java
Java数组与带参数方法:定义、调用及实践
Java数组与带参数方法:定义、调用及实践
298 1
|
存储 Java
Java中带返回值方法的定义与调用技术
Java中带返回值方法的定义与调用技术
366 1