0

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を見つけましたが、それができるかどうかはわかりません。

それともアスペクト?または、他の何か?

4

2 に答える 2

1

Project Lombokを見ることができます。これは同様のことを行いますが、注釈が付いています。プロジェクトロンボクでは、独自のコードでゲッターとセッターを使用する必要があります。

于 2012-04-18T13:58:16.253 に答える
0

他のツールがないわけではありません。

C# とは異なり、Java はプロパティをサポートしていません。

于 2012-04-18T13:55:12.887 に答える