私はGroovyに慣れていないので、これに関する多くの記事や質問を読んでいますが、何が起こっているのかまだわかりません。私がこれまでに理解したことから、Groovyで新しい配列を作成するとき、基礎となる型はJava ArrayListです。これは、サイズを変更できることを意味します。空として初期化し、次のようにaddメソッドを使用して要素を動的に追加できる必要があります。
MyType[] list = []
list.add(new MyType(...))
これはコンパイルされますが、実行時に失敗します。メソッドのシグネチャはありません:[LMyType; .add()は引数タイプに適用可能です:(MyType)値:[MyType @ 383bfa16]
これを行うための適切な方法または適切なタイプは何ですか?
これを行うGroovyの方法は
def list = []
list << new MyType(...)
リストを作成し、オーバーロードされた leftShift
演算子を使用してアイテムを追加します
多くの例については、Groovy リストに関するドキュメント を参照してください。
実際に作成したもの:
MyType[] list = []
サイズが0の固定サイズの配列(リストではない)でした。たとえば、次のようにサイズ4の固定サイズの配列を作成できます。
MyType[] array = new MyType[4]
しかし、もちろんaddメソッドはありません。
def
を使用してリストを作成すると、Object
を使用してこのインスタンスを作成するようなものになります(def
here の詳細を確認できます)。この場合、[]
は空のArrayList
を作成します。
def list = []
を使用すると、ArrayList
のadd()
メソッドで新しいアイテムを追加できます
list.add(new MyType())
または、オーバーロードされた左シフト演算子を使用したよりグルーヴィな方法:
list << new MyType()