0
public class DbManager<T extends Dao> {

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

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

    //..
}

コンストラクター内で setCreateDatabaseScript を呼び出すにはどうすればよいですか。例のように試してみましたが、うまくいきません。正しい構文とは?

4

3 に答える 3

1

setCreateDatabaseScript(T dao)のインスタンスが必要なTので、おそらくコンストラクターで渡す必要があります

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

また、T extends DaoDaoにキャストする必要がないので、そのまま使用してくださいdao.createTable();

于 2013-03-02T20:59:11.313 に答える
0
public DbManager(Context c) {
    setCreateDatabaseScript(T);
}

Tだけでなく、T型のオブジェクトをパラメーターとしてsetCreateDatabaseScriptを呼び出す必要があります。

于 2013-03-02T20:57:52.210 に答える
0

オブジェクト T は、コンストラクターで使用されるときに、宣言もインスタンス化もされていません。

于 2013-03-02T20:59:31.133 に答える