2012-12-18 95 views
0

的下面是我有:的Java類實例化參數化類型

class Class1 <T> 
{ 
    public void foo() 
    { 
     ParameterizedType parameterizedType = (ParameterizedType)getClass().getGenericSuperclass(); 
     Class<T> type = (Class<T>) parameterizedType.getActualTypeArguments()[0]; 
     System.out.println(type); 
    } 
} 

class Class2 <G> 
{ 
    public Class2() 
    { 
     Class1<G> class1 = new Class1<G>(); 
    } 
} 

但是當我打電話class1.foo(),我得到的超類,而不是參數。

如果我做

Class1<String> class1 = new Class1<String>(); 

,然後調用內部的Class1 class1.foo(),我得到的字符串。

我該如何修復實例Class1與泛型類型2?

+2

你是如何設法爲Class1情況獲得'String'的? – Akdeniz

+0

「,然後在Class1中調用class1.foo(),我得到String。」不,你會遇到ClassCastException。 – newacct

+0

是的,你是對的 – Jason

回答

0

你不行。在運行時,Class2不知道它的泛型類型參數是什麼。

+0

是的,這是正確的答案。 – Jason