JAVA全系列 教程
3762个小节阅读:7095.1k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
有时候我们不是必须使用Lambda的函数体定义实现,我们可以利用 lambda表达式指向一个已经存在的方法作为抽象方法的实现。
要求
参数的个数以及类型需要与函数接口中的抽象方法一致。
返回值类型要与函数接口中的抽象方法的返回值类型一致。
语法
方法归属者::方法名 静态方法的归属者为类名,非静态方法归属者为该对象的引用。
案例
xxxxxxxxxx
/**
* 无返回值,无参数
*/
@FunctionalInterface
interface NoReturnNoParam{
void method();
}
/**
* 无返回值,有一个参数
*/
@FunctionalInterface
interface NoReturnOneParam{
void method(int a);
}
/**
* 无返回值,有多个参数
*/
@FunctionalInterface
interface NoReturnMultiParam{
void method(int a,int b);
}
/**
* 有返回值,无参数
*/
@FunctionalInterface
interface ReturnNoParam{
int method();
}
/**
* 有返回值,有一个参数
*/
@FunctionalInterface
interface ReturnOneParam{
int method(int a);
}
/**
* 有返回值,有多个参数
*/
@FunctionalInterface
interface ReturnMultiParam{
int method(int a,int b);
}
public class Test {
public static void main(String[] args) {
/**
* 无返回值,无参数
*/
/* NoReturnNoParam noReturnNoParam = ()->{
System.out.println("NoReturnNoParam");
};*/
/**
* 简化版
*/
NoReturnNoParam noReturnNoParam = ()-> System.out.println("NoReturnNoParam");
noReturnNoParam.method();
/**
* 无返回值,有一个参数
*/
/* NoReturnOneParam noReturnOneParam = (int a)->{
System.out.println("NoReturnOneParam "+a);
};*/
/**
* 简化版
*/
NoReturnOneParam noReturnOneParam = a -> System.out.println("NoReturnOneParam "+a);
noReturnOneParam.method(10);
/**
* 无返回值,有多个参数
*/
/* NoReturnMultiParam noReturnMultiParam = (int a, int b)->{
System.out.println("NoReturnMultiParam "+a+"\t"+b);
};*/
NoReturnMultiParam noReturnMultiParam =(a,b)-> System.out.println("NoReturnMultiParam "+a+"\t"+b);
noReturnMultiParam.method(10,20);
/**
* 有返回值,无参数
*/
/* ReturnNoParam returnNoParam = ()->{
System.out.print("ReturnNoParam ");
return 10;
};*/
/**
* 简化版
*/
ReturnNoParam returnNoParam = ()->10+20;
System.out.println(returnNoParam.method());
/**
* 有返回值,有一个参数
*/
/* ReturnOneParam returnOneParam = (int a)->{
System.out.print("ReturnOneParam ");
return a;
};*/
/***
* 简化版
*/
ReturnOneParam returnOneParam = a->a;
System.out.println(returnOneParam.method(10));
/**
* 有返回值,有多个参数
*/
/*ReturnMultiParam returnMultiParam = (int a ,int b)->{
System.out.print("ReturnMultiParam ");
return a+b;
};*/
/**
* 简化版
*/
ReturnMultiParam returnMultiParam = (a ,b)->a+b;
System.out.println(returnMultiParam.method(10,20));
}
/**
* 要求:
* 1,参数的个数以及类型需要与函数接口中的抽象方法一致。
* 2,返回值类型要与函数接口中的抽象方法的返回值类型一致。
* @param a
* @return
*/
public static int doubleNum(int a){
return 2*a;
}
public int addTwo(int a){
return a+2;
}
}
xxxxxxxxxx
public class Test2 {
public static void main(String[] args) {
ReturnOneParam returnOneParam = Test::doubleNum;
int value = returnOneParam.method(10);
System.out.println(value);
Test test = new Test();
ReturnOneParam returnOneParam1 = test::addTwo;
int value2 = returnOneParam1.method(10);
System.out.println(value2);
}
}