2011-08-04 50 views
0

可能重複instantinate泛型類型實例:
Create instance of generic type in Java?也不會在Java

我有一個小麻煩。我不能在默認構造函數中實現泛型類型實例。 這裏是我的

public class MyClass<U extends MyUser> { 
    private U user; 

    public U getUser() { 
     return this.user; 
    } 

    public void setUser(U user) { 
     this.user = user; 
    } 

    public MyClass() { 
     this.user = new U(); 
    } 
} 

類代碼行this.user = new U()我得到異常

不能instantinate U型

。我如何創建U的新實例?

在此先感謝

+0

http://stackoverflow.com/questions/1090458/instantiating-a-generic-class-in-java – Collin

回答

0

您需要在實例化用戶時指定類型。該類型需要是MyUser的MyUser或子類型。

public class MyClass<U extends MyUser>{ 
private U user; 
public U getUser(){ 
return this.user; 
} 

public void setUser(U user){ 
    this.user=user; 
} 

public MyClass() { 
    this.user=new MyClass<U>(); 
    } 
} 
0

Java泛型在運行時不知道模板化參數的類型。因此,在您的示例中,運行時類型U未知,因此構造函數無法執行new U()

您需要將U(類似於Foo.class)的類型傳遞給析構函數,以便它知道如何創建U類型的新obejct。

+0

你能寫我的代碼創建類型實例嗎?提前致謝。 – pofighist