Nun, es gibt die allgemeine „Reflexion langsam ist und nur als letztes Mittel eingesetzt werden sollte“ best practice, aber die Richtlinien, die ich folgen, von einfach bis fortgeschritten:
- Cache jeder
Method
oder Field
oder Constructor
Instanzen, die Sie von Reflexionssuchen erhalten. Nach ihnen wiederholt zu suchen ist langsam.
- Wenn Sie können, zwischenzuspeichern sie global in einem
WeahHashMap
oder ähnlich, dass sie leert, wenn die Klassen entladen werden, so dass Sie Klassenreferenzen aus dem Cache
- Noch besser nicht auslaufen, wandeln die
Method
Objekte MethodHandles
und verwenden Sie dann LambdaMetaFactory
um sie in eine Function<Object[],Object>
umzuwandeln, die fast so schnell wie eine kompilierte Methodenreferenz sein wird. Immer noch Cache die Hilfsfunktionen, weil ihre Erstellung teuer ist.