方法参考缓存在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实现是否特定于此类缓存是否有用?
一只甜甜圈
繁花不似锦
相关分类