2013-03-02 188 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在构造函数中使用时从未被声明或实例化。

相关问题