O cache de referência do método é uma boa ideia no Java 8?

Considere que eu tenho um código como o seguinte:

class Foo {

   Y func(X x) {...} 

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

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

}

Suponha quehotFunction é chamado com muita frequência. Seria aconselhável armazenar em cachethis::func, talvez assim:

class Foo {
     Function<X,Y> f = this::func;
     ...
     void hotFunction(){
        doSomethingWithAFunc(f);
     }
}

No que diz respeito ao meu entendimento das referências ao método java, a Máquina Virtual cria um objeto de uma classe anônima quando uma referência ao método é usada. Portanto, o cache da referência criaria esse objeto apenas uma vez, enquanto a primeira abordagem o criaria em cada chamada de função. Isso está correto?

As referências de método que aparecem em posições quentes no código devem ser armazenadas em cache ou a VM consegue otimizar isso e tornar o cache supérfluo? Existe uma prática recomendada geral sobre isso ou essa implementação é altamente específica da VM, se esse cache é útil?

questionAnswers(3)

yourAnswerToTheQuestion