2010-03-05 42 views
0

我有一個名爲「TOTO」,我發送到執行以下功能類:類型發出

getData(toto); 

public String getData(Class myClass) { 
javax.jdo.Query query = p.newQuery(myClass); 
    List<myClass> list = (List<myClass>) pm.newQuery(query).execute(); 
for (myClass element : list) { 
    Do something here 
} 
} 

的問題是,我得到的類型編譯錯誤。 我在做什麼錯?

喬爾

+0

當然,myClass不是類型。 – 2010-03-05 17:07:28

回答

2

不能使用運行時變量作爲「論據」的泛型結構(如List<X>)。如果你瞭解一下類,你會傳遞,那麼你就可以限制是:

public String getData(Class<? extends Something> myClass) { 
    // ... 
    List<Something> list = (List<Something>) // ... 
+0

謝謝!很有用! – Joel 2010-03-05 17:38:10

1

可以實現下列方式:

public <T> String getData(Class<T> myClass) { 
    javax.jdo.Query query = p.newQuery(myClass); 
    List<T> list = (List<T>) pm.newQuery(query).execute(); 
    for (T element : list) { 
     Do something here 
    } 
} 

的地方,如果你想調用任何方法除了toString()element,您將需要一個接口/基類型並將其定義更改爲<T extends YourInterface>