ActionScript3.0の動的クラス(dynamic class)。
Javaだとこれがないのでちょっと調べてみました。
使うにはclassの前にdynamicって付ければいいみたい。
public dynamic class Person {
public name:String;
public function traceMe():void{
trace("I'm " + this.name + ".");
}
}
-----------------------------------
var person:Person = new Person();
person.name = "ryo";
person.traceMe();
//output
//I'm ryo.
//プロパティ, メソッドを追加
person.age = 24;
person.favorite = "Baseball";
person.traceDetail = function():void {
trace(person.age + " years old." + " I like " + person.favorite + ".");
}
person.traceDetail();
//output
//24 years old. I like Baseball.
for(var i:String in person) {
trace("property " + i + ": " + person[i]);
}
//output (動的プロパティのみ、ここではnameは出力されない)
//property age: 24
//property favorite: Baseball
//property traceDetail: function Function() {}
なるほどダイナミック。
あと、オブジェクトの動的プロパティに対して反復処理を行うfor..inを使うと、上述のように後から追加したプロパティとかメソッドのみが処理されているのがわかると思います。
dynamic classを使えばクラスベースでかつJavaScriptみたいな柔軟な処理が可能になります。
便利に使いこなせるようになりたいものです。