だから私が持っていると言う:
public class Foo<T> {
// Some stuff
}
public interface Factory<T> {
T newInstance();
Class<T> getKlass();
}
そして、Foo<T>を構築するためにFactoryの実装を作成したいと思います。
public class FooFactory<T> implements Factor<Foo<T>> {
private Class<Foo<T>> klass;
public FooFactory(Class<Foo<T>> klass) {
this.klass = klass;
}
public T newInstance() throws Exception {
return klass.newInstance();
}
public Class<Foo<T>> getKlass() {
return klass;
}
}
2つの質問:
- 私が持っているのがClass<T>だけの場合、Class <Foo <T >>を取得する方法はありますか?残念ながら、Fooはプライベートクラスであるため、全体像(つまり、Tがどうなるかについての知識)を持つ唯一のコードはFooについて知ることができず、したがってClass <Foo<T>>を与えることができません。
- これについてもっと良い方法はありますか?
ありがとう!
PS詳細をお求めの方は、こちらをご覧ください。完全な話は、FooとFooFactoryの両方が外部クラスのプライベートクラスになるということです。Fooは外部クラス全体で広く使用されており、誤ったガベージコレクションを回避するために、ObjectPoolを使用して、Fooのインスタンスを常に更新してガベージコレクションするのではなく、インスタンス化したいと考えています。ただし、ObjectPoolを使用するには、Factory <Foo <T >>が必要であり、Outer <T>の内部では、Outer<T>がインスタンス化されたときにTがどうなるかがわかりません。
public class Outer<T> {
private class Foo<T> { ... }
private class FooFactory<T> {...}
private ObjectPool<Foo<T>> fooPool;
...
}