我正在写一个看起来像这样的工厂类:
public class RepositoryFactory{ 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
?
您需要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
.