Cap*_*anz 43 java groovy list arraylist
我是Groovy的新手,尽管阅读了很多文章和问题,我仍然不清楚发生了什么.从我到目前为止所理解的,当您在Groovy中创建一个新数组时,底层类型是Java ArrayList.这意味着它应该是可调整大小的,您应该能够将其初始化为空,然后通过add方法动态添加元素,如下所示:
MyType[] list = []
list.add(new MyType(...))
Run Code Online (Sandbox Code Playgroud)
这会编译,但是它在运行时失败:没有方法签名:[LMyType; .add()适用于参数类型:( MyType)值:[MyType @ 383bfa16]
这样做的正确方法或适当类型是什么?
doe*_*eri 60
Groovy这样做的方法是
def list = []
list << new MyType(...)
Run Code Online (Sandbox Code Playgroud)
它创建一个列表并使用重载的leftShift运算符来追加项目
Paw*_*cyk 23
你实际创建的是:
MyType[] list = []
Run Code Online (Sandbox Code Playgroud)
是固定大小的数组(非列表),大小为0.您可以创建大小固定的大小数组,例如4:
MyType[] array = new MyType[4]
Run Code Online (Sandbox Code Playgroud)
但是当然没有添加方法.
如果您使用def它创建列表就像创建此实例Object(您可以def 在这里阅读更多信息).并在这种情况下[]创建空ArrayList.
因此,使用def list = []您可以使用add()方法追加新项目ArrayList
list.add(new MyType())
Run Code Online (Sandbox Code Playgroud)
或者使用超载左移运算符的更多groovy方式:
list << new MyType()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97178 次 |
| 最近记录: |