我正在为android设备开发一个数据库应用程序。我需要做的第一件事就是创建数据访问层。为此,我想在抽象工厂中使用DAO模式。
对于所有DAO,我有一个接口,它包含所有数据对象都需要实现的声明。(在我的例子中: IDataObject)
特定的DAO都由自己的接口表示,扩展了所有DAO的基本接口。
基本接口:
public interface IDataObject {
public IDataId getId();
public void write() throws MyDataWriteException;
public void validate() throws MyDataValidException;
}A延期:
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>我不知道怎么解决这个问题,有什么建议吗?
发布于 2014-10-31 11:35:23
我会把你的DataFactoryBuilder重构成这样:
class DataFactoryBuilder {
private DataFactoryBuilder() {
}
public static IDataFactory<? extends IDataObject> getFactory(Class<? extends IDataObject> clazz){
if (IDataSample1.class.isAssignableFrom(clazz)) {
return new DataSample1Fac();
}
return null;
}
}发布于 2014-11-03 17:07:36
我得到了以下解决方案:
public static <T extends IDataObject> IDataFactory<T> getFactory(Class<T> type) {
if (IDataSample1.class.isAssignableFrom(type)) {
DataSample1Facfac = new DataSample1Fac();
return (IDataFactory<T>) fac;
}
}但我收到一个警告:返回(IDataFactory) fac;
Type safety: Unchecked cast from DataSample1Fac to IDataFactory<T>我认为这不是问题,我只是要压制它。
https://stackoverflow.com/questions/26671736
复制相似问题