2026-07-23 03:18:49 -

package com.test.fun;

/**

* @FunctionalInterface 注解可以检测接口是否为函数式接口

* 如果不是函数式接口,则编译失败

* @param

*/

@FunctionalInterface

public interface Compute {

public int add(int a , int b );

// public int add(int a , int b );

}

2)函数式接口调用-1)匿名函数方式 - 2)lambda方式

public class Test1 {

public static int add(int a,int b, Compute compute ){

// compute.add()

return compute.add(a,b) ;

}

public static void main(String[] args) {

test2() ;

}

//传统匿名类方式

public static void test2( ) {

int i = 1 ;

int j =2 ;

add( i , j , new Compute(){

@Override

public int add(int a, int b) {

return a+b;

}

});

}

//使用过lamba表达式进行参数调用处理

public static void test1() {

int i = 1 ;

int j =2 ;

add( i , j ,(a,b)->{

return a+b ;

});

}

}

好处:使用lambda方式使调用更加的简洁

个人理解:

1)在函数式接口的调用的时候,如果传递了lambda则函数式接口内部调用了lambda表达式,最终使数据得以处理

2)lambda相当于一个函数,有输入和输出,当然输入和输出也可以是空的

3)那么函数式接口在什么时候使用呢?

当我们需要封装一段逻辑,需要使用lamdba处理的时候,那么我们就创建一个函数式接口作为参数,这个时候就可以传递lambda来处理逻辑了

三、 java提供的内置函数式接口及其具体使用详解

1) java.util.function.Supplier 接口包含一个无参方法:T get()

主要作用:接收一个lambda执行业务逻辑,返回对应的数据类型T(无输入,只有指定类型的输出)

例子:

public static String test3(Supplier supplier ){

return supplier.get() ;

}

public static void main(String[] args) {

String str = test3(()->{

return "测试supplier接口" ;

}) ;

System.out.println( str );

}

2)java.util.function.Consumer 消费一个数据,数据类型又泛型决定

主要作用:接收一个lambda执行业务逻辑,输入的数据类型为T(有输入,无输出)

public static void test3(String t , Consumer consumer ){

consumer.accept(t); ;

}

public static void main(String[] args) {

test3("测试",(str)->{

System.out.println( str );

}) ;

}

3)java.util.function.Predicate接口

作用:接收一个lambda执行业务逻辑,对某种数据类型的数据(传入的参数)进行判断,结果返回一个boolean值()

例子:

//对传入的参数t进行逻辑判断,返回true或者false

public static boolean test3(int t , Predicate predicate ){

return predicate.test(t);

}

public static void main(String[] args) {

test3(10 ,(i)->{

if(i>5){

return true;

}else{

return false;

}

}) ;

}

4)java.util.function.Function接口用来根据一个类型的数据得到另一个类型的数据

作用:接收一个lambda执行业务逻辑,对某种数据类型的数据进行处理,返回固定的数据类型(有输入,有输出)

例子:

public static Integer test4(String str, Function function ){

return function.apply(str) ;

}

public static void main(String[] args) {

int k = test4("10" ,(str)->{

return Integer.parseInt(str) ;

}) ;

System.out.println( k );

}


无法在 Windows 10/11 中删除打印机?如何强制删除它
刀剑如梦配过哪部电视剧的插曲