【发布时间】:2011-07-13 00:00:04
【问题描述】:
所以我知道这个话题以前已经做过了,例如Java Reflection Performance,但我的特殊问题是,似乎许多流行的库都是通过注释和反射实现的(例如 Gson、Jackson、Jaxb 实现、休眠搜索)。许多(如果不是全部)库提供了良好(或出色)的性能,即使它们使用反射。我的问题是,他们是怎么做到的?是不是有什么“窍门”要知道,还是单纯的使用直接反射,对性能的担忧被夸大了?
编辑: 例如,当我们写: MyObject obj = new Gson().fromJson(someInputStream, MyObject.class);
我可以理解库如何在内部缓存 Field 对象,但在我看来,它每次都需要反射地实例化对象,并且需要根据解析的值(反射地)调用每个字段的 setter来自 json。 或者有什么方法可以仅在启动时支付(全部)反射成本?
我确实注意到 Gson/Jackson 等具有相对较大的启动成本,并且在那之后速度非常快。所以很明显我想知道,如果我写一个做一些模糊相似的库,有没有我需要知道的技巧?因为在每次通话中,您似乎都无法摆脱一定程度的反思。
【问题讨论】:
标签: java reflection