我想知道这个操作在以下运行时有多昂贵:
有关给定类(target = TYPE)的注释的信息在编译时可用,所以我猜它可以以某种方式缓存。但另一方面,我听说Dalvik在注释方面表现不佳。
如果我可以在编译期间检查和缓存信息(使用一些代码生成插件),我应该这样做,还是会过度优化?
答案 0 :(得分:2)
略过source code,看起来isAnnotationPresent(...)
调用getAnnotation(...)
,调用initAnnotationsIfNecessary()
。
initAnnotationsIfNecessary()
在第一次调用时构造注释图;先前构造的地图将在后续调用中重复使用。
所以,从它的外观来看,第一次通话是昂贵的(-ish);随后的电话很便宜。