方法引用也可以理解成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入门知识,可以为你分享。
推荐阅读: