¿El almacenamiento en caché de referencia de método es una buena idea en Java 8?

Considere que tengo un código como el siguiente:

class Foo {

   Y func(X x) {...} 

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

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

}

Suponer quehotFunction se llama muy a menudo. ¿Sería aconsejable almacenar en caché?this::func, tal vez así:

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

En lo que respecta a mi comprensión de las referencias de métodos de Java, la máquina virtual crea un objeto de una clase anónima cuando se utiliza una referencia de método. Por lo tanto, el almacenamiento en caché de la referencia crearía ese objeto solo una vez, mientras que el primer enfoque lo crea en cada llamada de función. ¿Es esto correcto?

¿Deben almacenarse en caché las referencias de métodos que aparecen en posiciones activas en el código o la VM puede optimizar esto y hacer que el almacenamiento en caché sea superfluo? ¿Existe una mejor práctica general sobre esto o esta implementación de VM altamente específica si tal almacenamiento en caché es de alguna utilidad?

Respuestas a la pregunta(3)

Su respuesta a la pregunta