反思的Java Singleton访问

时间:2016-03-29 16:35:43

标签: java reflection singleton

我在一个应该使用反射访问Singleton的类方法的类上工作。这里有最佳实践或陷阱吗?提前致谢

1 个答案:

答案 0 :(得分:1)

嗯,通用"反射很慢,应该只作为最后的手段使用#34;最佳实践,但我遵循的指导方针,从简单到高级:

  • 缓存从反射查找中获得的所有MethodFieldConstructor个实例。反复查看
  • 如果可以的话,将它们全局缓存在WeahHashMap或类似版本中,以便在卸载类时卸载它们,这样就不会从缓存中泄漏类引用
  • 更好的是,将Method对象转换为MethodHandles,然后使用LambdaMetaFactory将它们转换为Function<Object[],Object>,这几乎与编译方法引用一样快。 仍然缓存辅助函数,因为创建它们非常昂贵。