关于返回泛型类型的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