使用工厂方法错误“无法解析为类型”

时间:2015-10-29 16:48:20

标签: java design-patterns factory-method

我正在尝试在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

    }
}

1 个答案:

答案 0 :(得分:1)

new MySqlDAO.getInstance(scelta,p);没有任何意义,也无法编译。

new关键字与通过其构造函数创建对象实例相关联,这需要对构造函数进行显式调用(例如new MySqlDAO() - 请注意括号)。

但是,您可能希望将MySqlDAO.getInstance(scelta,p)作为static方法调用(如果它MySqlDAO也修正),如果它应该是单身。

您可能还希望使成为单身人士。