方法引用也可以理解成Lambda表达式的快捷写法,它要比Lambda表达式更加的简洁,可读性更高,有很好的重用性,下面就再一起详细的来了解一下吧。
假如,实现比较的简单,复用的地方又少,那么就推荐使用Lambda表达式,反之的话就应该使用方法引用。
这个运算符用于方法引用,这里要注意一下了,并不是调用方法,方法引用虽然没有直接使用Lambda表达式,可是,也和Lambda表达式有关,和函数式接口有关。
下面是方法引用的语法格式:(ObjectRef是类名或者实例名,methodName是相应的方法名)
注意一下,被引用方法的参数列表和返回值类型,必须和函数式接口方法参数列表和方法返回值类型一致。
示例代码:public class LambdaDemo
{
// 静态方法,进行加法运算
// 参数列表要与函数式接口方法calculateInt(int a, int b)兼容
public static int add(int a, int b)
{
return a + b;
}
// 实例方法,进行减法运算
// 参数列表要与函数式接口方法calculateInt(int a, int b)兼容
public int sub(int a, int b)
{
return a - b;
}
}
LambdaDemo类当中,提供了一个静态方法add,一个实例方法sub,这两个方法必须和函数式接口方法参数列表一致,方法返回值类型也要保持一致。public class HelloWorld
{
public static void main(String[] args)
{
int n1 = 10;
int n2 = 5;
// 打印加法计算结果
display(LambdaDemo::add, n1, n2);
LambdaDemo d = new LambdaDemo();
// 打印减法计算结果
display(d::sub, n1, n2);
}
/**
* 打印计算结果
*
* @param calc Lambda表达式
* @param n1 操作数1
* @param n2 操作数2
*/
public static void display(Calculable calc, int n1, int n2)
{
System.out.println(calc.calculateInt(n1, n2));
}
}
注意,代码第18行声明display方法,第一个参数calc是Calculable类型。
它能够接受三种对象:
1、Calculable实现对象;
2、Lambda表达式;
3、方法引用;
代码第6行中第一个实际参数
是静态方法的方法引用。
代码第9行中第一个实际参数
是实例方法的方法引用,d是LambdaDemo实例。
注意,
以上的内容你都了解了吗?请多多的关注奇Q工具网吧,更多java入门知识,可以为你分享。
推荐阅读: