我正在尝试在DAO上使用设计模式“Factory Method”。当我调用方法来创建正确的实例时,类型解析存在一些问题。 这是我调用该方法的主要方法,我得到错误:
public class Main {
public static void main(String[] args){
int scelta=1;
Parametri<InterfacciaTO> p=new Parametri<InterfacciaTO>();
//here I get the error
DaoInterface dao=(DaoInterface) new MySqlDAO.getInstance(scelta,p);
}
}
这些是我用来实现FactoryMethod的类。
public interface DaoFactory {
public abstract Object getInstance(int code,Parametri<InterfacciaTO> param);
}
public class MySqlDAO implements DaoFactory {
@Override
public DaoInterface getInstance(int code, Parametri<InterfacciaTO> param) {
switch(code){
case Indici.UTENTEDAO: return new UtenteDAO();
}
return null;
}
}
public interface DaoInterface {
public abstract void create(int code,Parametri<InterfacciaTO> param);
public abstract void delete(int code,Parametri<InterfacciaTO> param);
public abstract void update(int code,Parametri<InterfacciaTO> param);
public abstract void search(int code,Parametri<InterfacciaTO> param);
}
public class UtenteDAO implements DaoInterface {
@Override
public void create(int code, Parametri<InterfacciaTO> param) {
System.out.println("CIAU");
}
@Override
public void delete(int code, Parametri<InterfacciaTO> param) {
// TODO Auto-generated method stub
}
@Override
public void update(int code, Parametri<InterfacciaTO> param) {
// TODO Auto-generated method stub
}
@Override
public void search(int code, Parametri<InterfacciaTO> param) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:1)
new MySqlDAO.getInstance(scelta,p);
没有任何意义,也无法编译。
new
关键字与通过其构造函数创建对象实例相关联,这需要对构造函数进行显式调用(例如new MySqlDAO()
- 请注意括号)。
但是,您可能希望将MySqlDAO.getInstance(scelta,p)
作为static
方法调用(如果它MySqlDAO
也修正),如果它应该是单身。
您可能还希望使成为单身人士。