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