【发布时间】:2014-10-31 09:52:35
【问题描述】:
我正在为安卓设备开发一个数据库应用程序。 我需要做的第一件事是创建数据访问层。 为此,我想将 DAO 模式与抽象工厂一起使用。
对于所有 DAO,我有一个接口,其中包含所有数据对象需要实现的声明。 (在我的例子中:IDataObject)
具体的 DAO 都由自己的接口表示,扩展了所有 DAO 的基本接口。
基础接口:
public interface IDataObject {
public IDataId getId();
public void write() throws MyDataWriteException;
public void validate() throws MyDataValidException;
}
一个扩展:
public interface IDataSample1 extends IDataObject {
public void setNotice(String notice);
public String getNotice();
public void setDate(Date date);
public Date getDate();
}
要创建一个数据对象,我想使用抽象来使用抽象工厂,例如:
public interface IDataFactory<Template extends IDataObject> {
public List<Template> getAll();
public Template get(IDataId id);
public List<Template> getList(DataAccessArgument arg);
public List<Template> getList(List<DataAccessArgument> argList);
}
和实施:
public class DataSample1Fac implements IDataFactory<IDataSample1> {
public DataSample1Fac () {
}
public List<IDataSample1> getAll() {
return null;
}
public IDataSample1 get(IDataId id) {
return null;
}
public List<IDataSample1> getList(DataAccessArgument arg) {
return null;
}
public List<IDataSample1> getList(List<DataAccessArgument> argList) {
return null;
}
}
到目前为止我没有收到任何错误,但现在我想实现一个工厂构建器:
public class DataFactoryBuilder {
private DataFactoryBuilder() {
}
public static<T extends IDataObject> IDataFactory<T> getFactory(){
if (T instanceof IDataSample1)
return new DataSample1Fac();
return null;
}
}
我收到以下错误(第 8 行):
T cannot be resolved to a variable
和(第 9 行)
Type mismatch: cannot convert from DataSample1Fac to IDataFactory<T>
不知道如何解决这个问题,有什么建议吗?
【问题讨论】:
-
我试过了: public static
IDataFactory getFactory(Class type){ if (T == IDataSample1.class) return new DataSample1Fac();返回空值; } 但我得到了同样的错误 -
T 只是关于类型的信息。它本身不是一个对象,所以你不能在它上面调用方法。