playframeworkでは、javassist ライブラリを使用して、クラスのパブリック フィールドを として使用できるようにしproperty
ます。
例を参照してください。
public class User {
public String name;
}
User user = new User();
user.name = "Freewind"
System.out.println(user.name);
コンパイル時に、play は javassist でバイトコードを拡張します。最終的なコードは次のようになります。
public class User {
private String name;
public String getName() { return this.name; };
public void setName() { this.name = name; };
}
User user = new User();
user.setName("Freewind");
System.out.println(user.getName());
フィールドname
に getter と setter があるだけでなく、その呼び出しも getter と setter に変更されていることがわかります。
同じことを行う他の方法があるのだろうか(javassist以外のものを使用する)?
Annotation Processing Toolを見つけましたが、それができるかどうかはわかりません。
それともアスペクト?または、他の何か?