编程技术文章分享与教程

网站首页 > 技术文章 正文

Java函数式接口(JAVA函数式接口)

hmc789 2024-11-16 20:57:08 技术文章 2 ℃

函数式接口是Java 8引入的一个重要特性,它为函数式编程提供了支持。

1. 什么是函数式接口

函数式接口是仅包含一个抽象方法的接口。Java 8之前,接口中只能包含抽象方法的声明,但不能包含方法的实现。Java 8引入了默认方法和静态方法的概念,使得接口能够包含具体的方法实现。

@FunctionalInterface
public interface MyFunctionalInterface {
    void myMethod(); // 抽象方法

    default void myDefaultMethod() {
        // 默认方法的实现
    }

    static void myStaticMethod() {
        // 静态方法的实现
    }
}

@FunctionalInterface 是一个可选的注解,用于标记该接口是一个函数式接口。如果接口包含多个抽象方法,编译器将抛出错误。

2. 常用函数式接口

Java 8引入了java.util.function包,其中包含了许多常用的函数式接口。

2.1. Function接口

java.util.function.Function接口是一个函数式接口,它接受一个参数并返回一个结果。Function接口就像一位变身奇妙的转换师,能够将一个值转换为另一个值,让你的代码变得灵活多变。

import java.util.function.Function;

public class FunctionExample {
    public static void main(String[] args) {
        Function<String, Integer> lengthFunction = str -> str.length();
        int length = lengthFunction.apply("Hello, World!");

        System.out.println("魔法生效!字符串的长度为:" + length);
    }
}

2.2. Predicate接口

java.util.function.Predicate接口是一个函数式接口,它接受一个参数并返回一个布尔值。Predicate接口就像一位英雄的选拔官,可以根据条件挑选出你心仪的英雄。

import java.util.function.Predicate;

public class PredicateExample {
    public static void main(String[] args) {
        Predicate<Integer> isEven = num -> num % 2 == 0;

        System.out.println("挑选英雄中...");
        System.out.println(isEven.test(4) ? "你的英雄是偶数!" : "你的英雄是奇数!");
    }
}

2.3. Consumer 接口

Consumer接口是另一个常用的函数式接口。它接受一个参数但没有返回值。Consumer接口就像一位美食家,可以品尝你提供的美食,但并不给你任何反馈。

import java.util.function.Consumer;

public class ConsumerExample {
    public static void main(String[] args) {
        Consumer<String> enjoyFood = food -> System.out.println("享受美食:" + food);

        System.out.println("请享用你的美食...");
        enjoyFood.accept("披萨");
    }
}

2.4. Supplier接口

Supplier接口是Java中常用的函数式接口之一。它不接受任何参数,但返回一个结果。Supplier接口提供你的魔法药剂,就像一位魔法师,不需要原材料就可以提供你所需的魔法药剂。

import java.util.function.Supplier;

public class SupplierExample {
    public static void main(String[] args) {
        Supplier<String> getMagicPotion = () -> "魔法药剂";

        System.out.println("取得你的魔法药剂...");
        String potion = getMagicPotion.get();
        System.out.println("你获得了:" + potion);
    }
}

3. 总结

在下面的表格中,我们对这些常用函数式接口进行了总结:

函数式接口

功能

Function

接受一个参数并返回一个结果

Predicate

接受一个参数并返回一个布尔值

Consumer

接受一个参数但没有返回值

Supplier

不接受任何参数,但返回一个结果

标签列表
最新留言