Является ли кэширование ссылок на методы хорошей идеей в 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, виртуальная машина создает объект анонимного класса при использовании ссылки на метод. Таким образом, кэширование ссылки создаст этот объект только один раз, в то время как первый подход создает его при каждом вызове функции. Это правильно?

Следует ли кэшировать ссылки на методы, которые появляются в горячих позициях в коде, или виртуальная машина способна оптимизировать это и сделать излишнее кэширование? Существует ли в этом передовой опыт или это очень специфично для реализации виртуальной машины, имеет ли смысл такое кэширование?

Ответы на вопрос(3)

Ваш ответ на вопрос