Ist das Zwischenspeichern von Methodenreferenzen in Java 8 eine gute Idee?

Angenommen, ich habe folgenden Code:

class Foo {

   Y func(X x) {...} 

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

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

}

Nehme an, dasshotFunction wird sehr oft gerufen. Wäre es dann ratsam, zwischenzuspeichernthis::funcvielleicht so:

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

Nach meinem Verständnis von Java-Methodenreferenzen erstellt die virtuelle Maschine ein Objekt einer anonymen Klasse, wenn eine Methodenreferenz verwendet wird. Wenn Sie also die Referenz zwischenspeichern, wird das Objekt nur einmal erstellt, während es beim ersten Versuch bei jedem Funktionsaufruf erstellt wird. Ist das richtig?

Sollten Methodenreferenzen, die an wichtigen Stellen im Code erscheinen, zwischengespeichert werden, oder kann die VM dies optimieren und das Zwischenspeichern überflüssig machen? Gibt es eine allgemeine Best Practice dazu oder ist diese hochgradig VM-Implementierung spezifisch, ob ein solches Caching von Nutzen ist?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage