首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【lambda】lambda使用之函数式接口

【lambda】lambda使用之函数式接口

作者头像
master336
发布2026-06-15 19:52:38
发布2026-06-15 19:52:38
90
举报
目录

  • 函数式接口
    • 定义及特性
    • 内置函数式接口举例
      • Consumer\ 消费型接口
      • Supplier\ 供给型接口
      • Function\

函数式接口

定义及特性

只包含一个抽象方法的接口(有且仅有一个抽象方法,但是可以有多个非抽象方法的接口)

1. 函数式接口编程可以理解成java对OOF(面向函数编程)的支持 2. 之前所有可通过匿名实现类表示的,现在均可通过lamdba表达式来写 3. lambda是函数式接口的一个实例。 4. lambda本质上还是对象(函数式接口类型) 5. jdk提供丰富的函数式接口(java.util.function.*) 6. 函数式接口可以被隐式转换为 lambda 表达式。 7. 可以在接口上使用@FunctionalInterface 注解用于检查其是否为函数式接口。

内置函数式接口举例

Consumer<T> 消费型接口

接口定义:

代码语言:javascript
复制
void accept(T t);

示例代码:

代码语言:javascript
复制
import org.junit.Test;
import java.util.function.Consumer;
public class LambdaTest {
    @Test
    public void consumerTest() {
        new LambdaTest().consumerTest("测试",System.out::println);
    }
    /**
     * Consumer<T> 消费型接口
     * @param printStr
     * @param consumer
     */
  public void consumerTest(String printStr,Consumer<String> consumer) {
      consumer.accept(printStr);
  }
}
Supplier<T> 供给型接口

接口定义:

代码语言:javascript
复制
T get();

示例代码:

代码语言:javascript
复制
   /**
     * Supplier<T> 供给型接口
     */
  @Test
  public void supplierTest(){

      System.out.println("获得int随机数:"+supplierTest(() -> new Random().nextInt()));
  }
  public Integer supplierTest(Supplier<Integer> supplier) {
      return supplier.get();
  }
Function<T, R> 函数型接口

接口定义:

代码语言:javascript
复制
R apply(T t);

示例代码:

代码语言:javascript
复制
    /**
     * Function<T,R>  函数型接口
     */
    @Test
    public void functionTest(){
        System.out.println("转换结果:"+functionTest(1, s -> s.toString()));
    }
    public String functionTest(Integer testPatam, Function<Integer,String> function) {
        return function.apply(testPatam);
    }
Predicate<T> 断言型接口

接口定义:

代码语言:javascript
复制
 boolean test(T t);

示例代码:

代码语言:javascript
复制
    /**
     * Predicate<T> 供给型接口
     */
    @Test
    public void predicateTest(){
        System.out.println("判断结果:"+predicateTest(1, s -> s > 0));
    }
    public boolean predicateTest(Integer testPatam,Predicate<Integer> predicate) {
        return predicate.test(testPatam);
    }
BiConsumer<T, U> 供给型接口(扩展)

T、U俩入参,无需返回 接口定义:

代码语言:javascript
复制
void accept(T t, U u);
BiFunction<T, U, R> 函数型接口(扩展)

T、U俩入参,返回R 接口定义:

代码语言:javascript
复制
R apply(T t, U u);
BiPredicate<T, U> 断言型接口(扩展)

T、U俩入参,返回boolean 接口定义:

代码语言:javascript
复制
boolean test(T t, U u);
UnaryOperator<T> extends Function<T,T>

T入参,返回T,对T进行一元运算 接口定义:

代码语言:javascript
复制
T apply(T t);
BinaryOperator<T> extends BiFunction<T,T,T>

T、T俩入参,返回T,对T进行二元运算 接口定义:

代码语言:javascript
复制
T apply(T t, T u);
ToIntFunction<T> 与ToIntBiFunction<T, U>

接口定义

代码语言:javascript
复制
//ToIntFunction<T>
int applyAsInt(T value);
// ToIntBiFunction<T, U>
int applyAsInt(T t, U u);

其他类似如: ToDoubleFunction<T>和ToDoubleBiFunction<T, U> ToLongFunction<T>和ToLongBiFunction<T, U>

IntConsumer 消费型(扩展)

int类型的消费型 接口定义

代码语言:javascript
复制
void accept(int value);

其他类似如:DoubleConsumer、LongConsumer、ObjDoubleConsumer<T>、ObjIntConsumer<T>、ObjLongConsumer<T>

IntFunction<R> 函数型

int类型的入参,R返回 接口定义

代码语言:javascript
复制
  R apply(int value);

其他类似如:DoubleFunction<R>、LongFunction<R>

lambda使用之函数式接口 lambda语法及使用 java中的引用

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 函数式接口
    • 定义及特性
    • 内置函数式接口举例
      • Consumer<T> 消费型接口
      • Supplier<T> 供给型接口
      • Function<T, R> 函数型接口
      • Predicate<T> 断言型接口
      • BiConsumer<T, U> 供给型接口(扩展)
      • BiFunction<T, U, R> 函数型接口(扩展)
      • BiPredicate<T, U> 断言型接口(扩展)
      • UnaryOperator<T> extends Function<T,T>
      • BinaryOperator<T> extends BiFunction<T,T,T>
      • ToIntFunction<T> 与ToIntBiFunction<T, U>
      • IntConsumer 消费型(扩展)
      • IntFunction<R> 函数型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档