java泛型如何在构造函数中使用泛型

时间:2013-03-02 20:53:54

标签: java android

public class DbManager<T extends Dao> {

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

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

    //..
}

我如何在构造函数内部调用setCreateDatabaseScript。我在示例中尝试但不工作。什么是正确的语法?

3 个答案:

答案 0 :(得分:1)

setCreateDatabaseScript(T dao)需要T的实例,所以你可能应该在构造函数

中传递它
public DbManager(Context c, T dao) {
    setCreateDatabaseScript(dao);
}

此外,由于T extends Dao您不需要将其投放到Dao,只需使用dao.createTable();

答案 1 :(得分:0)

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

您必须使用类型为T的对象作为参数调用setCreateDatabaseScript,而不仅仅是使用T.

答案 2 :(得分:0)

在构造函数中使用对象T时,它从未被声明或实例化。