1

Java プロキシと cglib をチェックインしましたが、このプロジェクトを開始する方法についての例は見つかりませんでした。

これが私がしなければならないことです。

私はインターフェースを持っています:

public interface RoadMap<T extends City>{
    public void map(T city);
}

と呼ばれるクラスの内部クラスとして、さまざまなタイプの都市がたくさんありますCities

次のように、クラスのさまざまな内部クラスをループすることにより、実行時にインターフェイスを実装できるようにしたいと考えていますCities

for(Class clazz : Cities.class.getDeclaredClasses()){
   //implement RoadMap interface 
}

型パラメーターが clazz 型のパラメーターである必要があることを除いて、すべての実装は同一です (for ループ内)。

これは可能ですか?もしそうなら、どこから始めるべきですか?Java Proxy と cglib はメソッドのインターセプトについてよく話しますが、それは私がここでやりたいことではありません。

ありがとう

4

1 に答える 1

0

すべての実装が同一である場合、必要なのは 1 つの実装だけです。これは、動的プロキシを使用せずに、ジェネリック型を気にしない実装です (ただし、動的プロキシを使用して同じことを行うことができます)。

public class RoadMapFactory {
    @SuppressWarnings("unchecked")
    public <T extends City> RoadMap<T> createWithRawTypes() {
        return new RoadMap() {
            @Override
            public void map(City city) {
                System.out.println("I mapped this city : " + city);

            }
        };
    }

    public static void main(String... args) {
        RoadMapFactory factory = new RoadMapFactory();
        RoadMap<SubCity1> map1 = factory.createWithRawTypes();
        map1.map(new SubCity1());
        RoadMap<SubCity2> map2 = factory.createWithRawTypes();
        map2.map(new SubCity2());
    }
}
于 2012-12-23T07:50:10.287 に答える