2013-03-02 82 views
0
public class DbManager<T extends Dao> { 

    public DbManager(Context c) { 
     setCreateDatabaseScript(T); 
    } 

    public void setCreateDatabaseScript(T dao) { 
     this.createDatabaseScript = ((Dao)dao).createTable(); 
    } 

    //.. 
} 

如何在構造函數內部調用setCreateDatabaseScript。我嘗試像例子,但不工作。什麼是正確的語法?java通用如何在構造函數中使用泛型

+0

你期望'setCreateDatabaseScript(T)'是什麼意思? 'T'是*類型參數*,不是要傳遞給方法的值... – 2013-03-02 20:57:27

回答

0
public DbManager(Context c) { 
    setCreateDatabaseScript(T); 
} 

你必須調用setCreateDatabaseScript與T類型的對象作爲參數,而不是僅僅與T.

1

setCreateDatabaseScript(T dao)需要的T實例,這樣你應該通過它在構造函數中

public DbManager(Context c, T dao) { 
    setCreateDatabaseScript(dao); 
} 

也因爲T extends Dao你不需要將它投射到道,只需使用dao.createTable();

0

對象T在構造函數中使用時從未被聲明或實例化。