所以说我有:
public class Foo<T> {
// Some stuff
}
public interface Factory<T> {
T newInstance();
Class<T> getKlass();
}
我想实现 Factory 来构建 Foo<T>s:
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;
}
}
两个问题:
- 如果我只有 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;
...
}