首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java8中,方法引用缓存是一个好主意吗?

在Java8中,方法引用缓存是一个好主意吗?
EN

Stack Overflow用户
提问于 2014-06-02 03:51:20
回答 1查看 13.3K关注 0票数 82

假设我有如下代码:

代码语言:javascript
复制
class Foo {

   Y func(X x) {...} 

   void doSomethingWithAFunc(Function<X,Y> f){...}

   void hotFunction(){
        doSomethingWithAFunc(this::func);
   }

}

假设hotFunction经常被调用。那么缓存this::func是否可取,可能如下所示:

代码语言:javascript
复制
class Foo {
     Function<X,Y> f = this::func;
     ...
     void hotFunction(){
        doSomethingWithAFunc(f);
     }
}

就我对java方法引用的理解而言,当使用方法引用时,虚拟机会创建一个匿名类的对象。因此,缓存引用将只创建该对象一次,而第一种方法在每次函数调用时创建该对象。这是正确的吗?

是否应该缓存出现在代码中热门位置的方法引用,或者VM是否能够优化这一点并使缓存变得多余?有没有关于这方面的一般最佳实践,或者这种高度的VM实现是否特定于这种缓存是否有用?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23983832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档