解决方法
groovy中的@Lazy注释通常用于对象中的一个字段,这个字段的创建时间或内存都很昂贵.使用此注释时,在创建对象实例时不会计算对象中的字段值,而是在第一次调用时计算它.
因此,即您创建了一个对象的实例,但是您没有获得带有@Lazy注释的字段,因此永远不会计算字段值,因此您可以节省执行时间和内存资源.查看代码示例(示例有废话,但我希望有助于理解解释):
// without lazy annotation with this code token.length is calculated even // is not used class sample{ String token Integer tokenSize = { token?.length() }() } def obj = new sample() obj.token = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' // with Lazy annotation tokenSize is not calculated because the code // is not getting the field. class sample{ String token @Lazy tokenSize = { token?.length() }() } def obj = new sample() obj.token = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa'
希望这可以帮助,
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。