Java方法引用“类::实例方法”的原理
在java中,我们可以通过“类::实例方法”的方式获取实例方法引用。这种引用方式背后的原理是什么?
根据java语言规范中的规定,当编译时声明是一个实例方法时,方法引用表达式的运行时计算过程如下:
- 调用第一个参数作为方法目标对象。
- 将第二个到最后一个参数作为方法调用参数。
例如,代码:
立即学习“Java免费学习笔记(深入)”;
ArrayList<String> list = new ArrayList<>(); Collections.addAll(list, "a", "b", "c"); // 将集合中的字母转为大写 list.stream() // 数据流中的数据类型为 String,所以可以引用 String 类中的实例方法 .map(String::toUpperCase) .forEach(System.out::println);
由于数据流中的数据类型是string,因此可以引用string类中的实例方法。string::touppercase表示调用string类的touppercase实例方法,并将数据流中的每个元素作为调用参数。
综上所述,java通过“类::实例方法”方式获取实例方法引用的原理是:将调用对象的类型作为方法目标,将后面的参数作为方法调用参数。