Bem gente estou fazendo um projeto para faculdade e quero fazer uma classe genérica para o CRUD, já que ai toda vez que eu for criar um CRUD (cliente, funcionario, etc…) eu extendo ela e sobrescrevo os métodos, só que tenho um problema:
Criei a classe genérica da seguinte forma:
public class Dao {
public void create(){
}
public void read(){
}
public void update(){
}
public void delete(){
}
}
Só que métodos como o create, update e delete tem que ter a entrada de parâmetro com o tipo da classe e o read tem que me retorna uma lista daquele tipo.
public class DaoFun extends Dao{
public void create(Funcionario fun){
}
public ArrayList read(){
ArrayList<Funcionario> listaFun = new ArrayList<>();
return listaFun;
}
public void update(Funcionario fun){
}
public void delete(Funcionario fun){
}
}
(Corrija me se eu falar bobagem) -> Só que a identidade de um método é formada pelo seu nome, parâmetros e aquilo que ele traz ou não como retorno, logo ao fazer a segunda parte do código eu não estou mais usando polimorfismo já que estou mudando a identidade do método e sim estou criando outros métodos certo? Pelo menos é isso que eu penso e o nétbeans manda eu tirar a @Override quando faço algo deste tipo.
Agora vem minha dúvida, se minha ideia acima estiver correta como eu posso criar um classe genérica para meu CRUD, onde eu possa colocar uma entrada de dados genérica para o (create, update e delete) e uma e um retorno genérico para o método read();
Por exemplo:
public void create (Generico generico){
}
Já tentei fazer o acima usando a classe Objetc no meu Dao (Objetc obj) e mudar para (Funcionario fun) no meu DaoFun, só que ao fazer isso o netbeans fala para eu tirar o @Override, logo não estou mais usando polimorfismo, então alguém tem alguma solução para que eu possa criar minha classe Dao com parâmetros e retornos genéricos e eu possa aplicar polimorfismo nas minhas classes concretas (DaoFun, DaoCliente, etc)?