为什么我们在Groovy中需要@lazy属性,它的优点是什么?

我学习Groovy时最令人困惑的概念之一是:懒惰的属性.
从C/C++找不到类似的东西
有谁知道为什么我们需要这些东西以及如何在没有它的情况下生活,或者替代方法.
感谢任何帮助:)

解决方法

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'

希望这可以帮助,

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...