我想创建一个包含Groovy中某个类的10个不同对象的List。在Java中有Arrays.fill,但我确信Groovy中有一种更优雅的方式。如何在Groovy中轻松地填充新对象列表?
我尝试这样做:
def mylist = [new MyClass()]*10;
但是,这让我对列表中的每个项目相同的参考。
我想创建一个包含Groovy中某个类的10个不同对象的List。在Java中有Arrays.fill,但我确信Groovy中有一种更优雅的方式。如何在Groovy中轻松地填充新对象列表?
我尝试这样做:
def mylist = [new MyClass()]*10;
但是,这让我对列表中的每个项目相同的参考。
我结束了使用@ cfrick的版本:
def l = ([MyClass]*10)*.newInstance()
assert l.size() == 10
assert l.unique().size() == 10
它适合一行并且可读。
你可以使用简单的withDefault
它每次它被称为时间返回新的对象:
def l = [].withDefault { new Object() }
或(这并没有太大的意义在我看来):
def l = (0..9).collect { new Object() }
assert l.size() == 10
assert l.unique().size() == 10
使用闭包解决方案创建每个对象:
def create = { new Object() }
objects = ([ create ] * 10)*.call()
assert objects.unique().size() == 10
'([Object] * 10)*。newInstance()'为了它的乐趣... – cfrick 2014-08-29 12:24:41
您是否曾在带拖鞋的椅子上试过? ;-) – 2014-08-29 14:20:23