方法参考缓存在Java 8中是个好主意吗?
考虑我有以下代码:
class Foo {
Y func(X x) {...}
void doSomethingWithAFunc(Function<X,Y> f){...}
void hotFunction(){
doSomethingWithAFunc(this::func);
}}假设hotFunction经常被调用。那么缓存是否可取this::func,也许是这样的:
class Foo {
Function<X,Y> f = this::func;
...
void hotFunction(){
doSomethingWithAFunc(f);
}}就我对java方法引用的理解而言,虚拟机在使用方法引用时会创建匿名类的对象。因此,缓存引用将仅创建该对象一次,而第一种方法在每个函数调用上创建它。它是否正确?
是否应缓存出现在代码中热位置的方法引用,或者VM是否能够对此进行优化并使缓存变得多余?是否存在关于此的一般最佳实践,或者这种高度VM实现是否特定于此类缓存是否有用?
凤凰求蛊
一只甜甜圈
繁花不似锦
随时随地看视频慕课网APP
相关分类