2016-03-29 68 views

回答

1

嗯,有一般的「反思是緩慢的,只應作爲最後的手段」的最佳實踐,但我遵循的準則,從簡單到先進:

  • 緩存任何MethodFieldConstructor您從反射查找中獲得的實例。反覆查找他們是
  • 如果可以的話,全球緩存它們在WeahHashMap或相似,以至於它們卸載時的類卸載這樣你就不會從緩存中泄漏的類引用
  • 更妙的是,Method對象轉換爲MethodHandles,然後用LambdaMetaFactory將它們變成一個Function<Object[],Object>,這幾乎與編譯的方法引用一樣快。 仍然緩存助手功能,因爲創建它們是昂貴的。