1

RESTful リソースを表す一連のクラスと、実際に HTTP 要求を実行してオブジェクトを取得および構築するその他のヘルパー オブジェクトを作成しました。私のクラスは次のようになります:

class MyResource{
    Attribute id = new Attribute(this, long);
    Attribute name = new Attribute(this, String);
    /* etc */
}

ここで、POJO を処理するのが好きなフレームワークに接続するために、POJO クラスを使用したいと思うことがあります。

次のようなプロキシが必要です。

class MyResourceProxy{
    private MyResource realResource;

    public MyResourceProxy(MyResource o){realResource = o;}

    public long getId(){
        return realResource.id.get();
    }

    public void setId(long value){
        realResource.id.set(value);
    }

    public String getName(){
        return realResource.name.get();
    }

    public void setName(String value){
        realResource.name.set(value);
    }        
}

これらのプロキシ クラスのコードを維持する必要はありませんが、「リソース タイプ」のマスター クラスのみを維持する必要があります。

イントロスペクションを調べたところ、前述のプロキシ コードをオンデマンドで生成する方法に関するヒントが見つかりました。問題は、コンパイル時にコードを生成し、ライブラリと一緒にコンパイルすることは可能ですか? 多分私は間違った方向に進んでいて、面白くないことをしているのかもしれません;)

どう思いますか?ありがとう!

4

2 に答える 2

2

それはあなたが構築するシステムに依存します。あなたが意味するならjavac、私はノーと言うでしょうが、あなたが使用するantmaven、あなたができるなら。

コードジェネレーターの例がたくさんあります。

あなたの場合、コンパイルされた MyResource クラスでリフレクションを使用します。クラスのテンプレート化に Velocity を使用することを検討します。あなたのケースではやり過ぎかもしれませんが、より多くのコードを生成すると役立つかもしれません。

于 2011-03-24T17:08:55.350 に答える
1

依存性注入を使用して、インスタンス化時にクラスを生成しようとしましたか?

DIの基本例

于 2011-03-24T17:10:15.563 に答える