2013-03-02 3 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 generic как использовать generic в конструкторе

+0

Что вы ожидаете от 'setCreateDatabaseScript (T)'? 'T' - это параметр * типа *, а не значение, которое нужно передать методу ... –

ответ

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

Вы должны вызвать setCreateDatabaseScript с объектом типа T в качестве параметра, а не только с Т.

1

setCreateDatabaseScript(T dao) необходим экземпляр T, так что вы, вероятно, должен передать его в конструктор

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

Также с T extends Dao вам не нужно бросать его в Дао, просто используйте dao.createTable();

0

object, T, никогда не был объявлен или не создан, когда он используется в вашем конструкторе.