Как всегда с производительностью, только хороший ответ тест, измерение, тест снова, снова измерить ...
Это, как говорится, да кэширование, вероятно, будет быстрее, вопрос в том, будет ли она значительно быстрее ваш контекст.
Недостатком кеширования является использование памяти и безопасность потоков. МетодHandle сам по себе является неизменным (не явным образом документированным, но смотря на контракт, это, скорее всего, так). МетодHandles.Lookup используется для проверки ограничений безопасности, поэтому кэширование может позволить вам обойти или хотя бы изменить поведение в отношении ограничений безопасности. Это может быть или не быть проблемой для вас.
Использование памяти вступает в игру, если вы уберете много разных MethodHandle. Вы должны убедиться, что ваш кеш ограничен и правильно. Я предполагаю, что вы не будете кэшировать много разных экземпляров, но это только предположение ...
Рассмотрите возможность добавления тега java-8, потому что он, вероятно, более тщательно контролируется основной командой Java. Вы также можете выполнить некоторые фактические измерения с помощью 'jmh'. –
Я подозреваю, вы обнаружите, что они уже кэшированы за кулисами. В общем, вы должны быть осторожны с кэшами на стороне приложения. У них обычно больше проблем, чем они стоят, и я говорю от горького опыта. – EJP
Какие методы вы не видите? Если они являются «общедоступными», вы можете использовать ['publicLookup()'] (http://docs.oracle.com/javase/7/docs/api/java/lang/invoke/MethodHandles.html#publicLookup()), которые уже одноэлемент. – Holger