Java是否支持类似方法引用的POD字段简洁引用语法?
字段引用的简洁语法支持
Java确实支持针对公开字段的简洁引用语法,就是你提到的FooPod::x形式,完全不需要每次编写完整的Lambda表达式。
这种字段引用属于Java方法引用的一种类型(引用类的实例字段),可以直接适配符合签名要求的函数式接口,比如Function<FooPod, Integer>。
示例代码
针对你的FooPod类,直接使用字段引用的写法如下:
void printOne(String name, Function<FooPod, Integer> extractFn) { .... }; printOne("x", FooPod::x); printOne("y", FooPod::y); printOne("z", FooPod::z);
等价说明
FooPod::x的作用完全等价于Lambda表达式fooPod -> fooPod.x,但写法更简洁直观,和你之前用Foo::getX这种方法引用的体验一致。
只要函数式接口的抽象方法满足「接收目标类实例作为参数,返回字段对应类型的值」的签名,就可以直接使用这种字段引用语法。
内容的提问来源于stack exchange,提问作者BeeOnRope
相关产品推荐
相关产品推荐

