關於返回泛型類型的Java方法有很多問題,但目前爲止他們都沒有幫助我。返回兩個或多個泛型類型的Java方法
因此,這裏是我的代碼:
interface DAO<K, T> {
void insert(T t);
void update(K k, T t);
void delete(K k);
void delete();
T select(K k);
List<T> select();
}
public class CourseDAO implements DAO<String, Course> {
public void insert(Course t) {}
public void update(String k, Course t) {}
public void delete(String k) {}
public void delete() {}
public Course select(String k) {}
public List<Course> select() {}
}
public class StudentDAO implements DAO<Long, Student> {
public void insert(Student t) {}
public void update(Long k, Student t) {}
public void delete(Long k) {}
public void delete() {}
public Student select(Long k) {}
public List<Student> select() {}
}
public enum EntityType { COURSE, STUDENT }
現在我想它接受一個EntityType
參數和返回根據參數值CourseDAO
或StudentDAO
實例的工廠方法。
我嘗試下面的代碼沒有成功:
public <K,T> DAO<K,T> createDAOFactory(EntityType type) {
switch (type) {
case COURSE : return (K,T) new CourseDAO(); break;
case STUDENT : return (K,T) new StudentDAO(); break;
}
return null;
}
誰能幫我寫,並調用此方法???
乾杯,
Romualdo。
你試圖用這種工廠方法解決什麼問題?據我所知,使用這種方法沒有明智的方法(假設它可以編譯開始)。 – Steven
如果我從保留DAO作爲返回類型的方法簽名中刪除,並且從返回值中刪除了(K,T),但是Eclipse會顯示警告:「DAO是原始類型,對泛型類型DAO 的引用應該被參數化」。 –
是的,這是編譯它的一種方法。但是,您打算如何調用此方法並使用它返回的DAO? – Steven