Oi pessoal estou estudando a apostila da Caelum e não entendi uma instância criada envolvendo interface, vou tentar perguntar direito vamos lá…
primeiramente ele cria uma interface:
public interface BusinessLogic {
void execute(HttpServletRequest req, HttpServletResponse res) throws Exception;
}
depois ele implementa a mesma:
public class TestaMVC implements BusinessLogic {
public void execute(HttpServletRequest req, HttpServletResponse res)
throws Exception {
System.out.println(?Executando a logica e redirecionando…?);
RequestDispatcher rd = req.getRequestDispatcher("/testamvc.
jsp");
rd.forward(req, res);
}
}
até ai tudo bem, agora a criação da classe controler…
public class ControllerServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String businessLogicClassName = request.getParameter(“business”);
Class businessLogicClass = null;
try {
businessLogicClass = Class.forName(businessLogicClassName);
} catch (ClassNotFoundException e) {
throw new ServletException("Não encontro a classe " +
businessLogicClassName);
}
if (!BusinessLogic.class.isAssignableFrom(businessLogicClass)) {
throw new ServletException("classe não implementa a interface: "
- businessLogicClassName);
}
BusinessLogic businessLogicObject = null;
try {
businessLogicObject = (BusinessLogic) businessLogicClass.newInstance(); [color=red]aqui está a duvida[/color]
}
catch (InstantiationException e) {
throw new ServletException(e);
}
catch (IllegalAccessException e) {
throw new ServletException(e);
}
try {
businessLogicObject.execute(request, response);
}
catch (Exception e) {
throw new
ServletException(?A lógica de negócios causou uma
exceção?, e);
}
}
}
então esta linha : businessLogicObject = (BusinessLogic) businessLogicClass.newInstance();
ele cria uma interface na linha acima, ou seja businessLogicObject é do tipo BusinessLogic, não entendo por quê
uma interface está recebendo a intância da classe e depois ele chama o execute da interface: businessLogicObject.execute(request, response);
ele não deveria usar a classe que implementa a interface tanto para criar a classe quanto para executar o método execute? se alguém puder exclarecer eu agradeço desculpe a quantidade de texto…
Obrigado