リストから任意のクラスのインスタンスを作成する
プログラム中で得た値を元にインスタンスを生成する場合とか、結構便利かも。
class Person { def name, age Person (name, age) { this.name = name this.age = age } } p = ['foo', 20] as Person // ===> Person@199939 p.name // ===> foo p.age // ===> 20
Groovy in Action の p186 によると、以下のように、アサインメント時に暗黙的にインスタンス生成をしてくれるという仕組みもあるとのこと。
でも、今のおいらの環境ではうまくいきません o...rz
Person p = ['bar', 30] // ===> Person@159e154 p.name
groovySh 上で上記を実行すると、p.name のところで下記のエラーがでます。
ERROR groovy.lang.MissingPropertyException: No such property: p for class: groovysh_evaluate at groovysh_evaluate.run (groovysh_evaluate:1) ...
う〜む、何でだろ?
id:ruzia さんができたというので、おいらももう一回やってみたところ、できましたw
groovy> class Person { groovy> def name, age groovy> Person (name, age) { groovy> this.name = name groovy> this.age = age groovy> } groovy> } groovy> Person p = ['bar', 30] groovy> p.name Result: "bar"