我正在写一个看起来像这样的工厂类:
public class RepositoryFactory<T> {
public T getRepository(){
if(T is IQuestionRepository){ // This is where I am not sure
return new QuestionRepository();
}
if(T is IAnswerRepository){ // This is where I am not sure
return new AnswerRepository();
}
}
}
但如何查看T
是指定interface
的类型?
答案 0 :(得分:8)
您需要通过传入泛型类型的RepositoryFactory
对象来创建Class
实例。
public class RepositoryFactory<T> {
private Class<T> type;
public RepositoryFactory(Class<T> type) {
this.type = type;
}
public T getRepository(){
if(type.isAssignableFrom(IQuestionRepository.class)){ //or type.equals(...) for more restrictive
return new QuestionRepository();
}
...
}
否则,在运行时,您无法知道类型变量T
的值。