Groovy懒惰对象构造

时间:2015-06-19 10:42:11

标签: groovy constructor lazy-evaluation

我有一个可以通过传递字符串列表或传递文件来创建的类。将解析该文件,创建字符串列表。所以它实际上是一个帮助构造函数。

解析文件可能需要很长时间,并且生成的字符串列表可能永远不会被使用(即使对象仍然是创建的)。因此,我得到了“延迟解析”文件的想法,以便实际上只在使用此对象的某些方法之前解析文件。

有没有什么方法可以用groovy甚至更好的方式来达到我想要的目的?

2 个答案:

答案 0 :(得分:0)

我现在使用了一种解决方法。我保存了字段中其中一个构造函数中给出的文件或字符串列表(另一个为null)。然后我创建了一个第三个惰性字段,它访问非null属性(不管它是什么),如果它是文件则解析它。

这是相当复杂的但我认为这是使用lazyness与传递给构造函数的参数的唯一方法,这些参数应该被懒惰地评估。

答案 1 :(得分:0)

不要解析构造函数中的内容,只需将StringFile构造函数参数存储在类的属性中。然后使用之前的属性使用慢速解析创建一个新方法。最后,您可以使用@Memoized Groovy注释来缓存注释此方法的结果。