0
说我想要做这样的事情Java的泛型的使用问题
public class Container<C extends Member> {
public void foo() {
C newC = new C();
}
}
我意识到,这是不行的,但什么是正确的Java成语呢?
说我想要做这样的事情Java的泛型的使用问题
public class Container<C extends Member> {
public void foo() {
C newC = new C();
}
}
我意识到,这是不行的,但什么是正确的Java成语呢?
典型成语indroducing在构造传递的类型标签:
public class Container<C extends Member> {
private Class<C> tag;
public Container(Class<C> tag) {
this.tag = tag;
}
public void foo() {
C newC = tag.newInstance();
}
}
通用C型是在运行时被擦除到java.lang.Object中。没有办法实例化已擦除的泛型类型。这似乎更像是你想要某种工厂的创作模式?
abstract class MemberFactory {
public static <T> Member create(Class<T> memberClass) throws Exception {
return memberClass.newInstance();
}
}
Member premiumMember = MemberFactory.create(PremiumMember.class);
如果是这种情况,您可能需要查看使用依赖注入和Spring或Guice等框架。
我不确定我是否明白“this”是什么给你的例子。你能否用不同的方式描述这个问题 – Manius 2010-10-16 17:18:52