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를 호출 할 수 있습니까? 나는보기에는 좋아하지만 일하지는 않습니다. 올바른 구문은 무엇입니까?자바 일반 생성자에서 제네릭을 사용하는 방법

+0

'setCreateDatabaseScript (T)'의 의미는 무엇입니까? 'T'는 메소드에 전달할 값이 아닌 * type 매개 변수입니다. –

답변

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

당신은 매개 변수로, 단지 T.

1

setCreateDatabaseScript(T dao)와 타입 T의 객체와 setCreateDatabaseScript 전화를해야 T의 인스턴스가 그래서 당신은 아마 생성자

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

에서 그것을 통과해야 필요 또한 T extends Dao부터 Dao에 캐스팅하지 않아도됩니다. dao.createTable();

0

객체, T는 생성자에서 사용될 때 결코 선언되거나 인스턴스화되지 않았습니다.

관련 문제