Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida sobre a "class DAO"

Senhores, a minha dúvida é meio complexa de perguntar escrevendo, seria mais fácil falando, tenho várias dúvidas, então vamos lá.

1 - Na classe "class DAO", primeiro, o que significa esse <T> na classe, pode explicar dando exemplos ???

2 - Na declaração da variável da classe chamada "classe", por que essa variável é do tipo Class e também tem <T>???

3 - No construtor da classe, o DAO recebe por parâmetro uma variável (classe) do tipo Class<T>, de novo por que o <T> junto com Class, para que serve ???

4 - E pra finalizar, o que significa o método adicionar receber a variável "t" do tipo "T" public void adiciona(T t)

Minhas observações, sei que quando quero dizer que uma determinada coleção de objetos é de um determinado objetos, ou seja, que só pode ser de um determinado objeto, declaro da seguinte forma, por exemplo: Collection autores = new ArrayList();

Então tenho uma coleção contendo vários autores do objeto , nesse caso eu entendi, mas no caso <T> Por que essa declaração na classe DAO, no construtor e no método adicionar ???

Ufa, escrevi tanto, obrigado.

4 respostas
solução!

Ola Eduardo!

Muitas dúvidas em um único forum, não é muito legal. Seria melhor criar varios foruns cada um com uma dúvida, fica melhor para discutir o assunto.

Sua duvida nº 4: o T siginifica que no caso esse metodo poderá receber qualquer TIPO, pode ser um new Aluno() ou new Carro() ou new Curso().

nº 2 e 3: juntas...

new DAO<Livro>(Livro.class).remove(livro)

Ao passao Livro no tipo do new DAO voce esta falando para seu DAO que ele sera do tipo Livro. Depois ao passa (Livro.class) entre os parenteses, note que logo na sequencia vc tem acesso ao metodo remove, podemos imaginar que fazer isso:

new DAO<Livro>(Livro.class).remove(livro)

seria equivalente a fazer isso:

DAO livroDao = new DAO<Livro>
livroDao.remove(livro)

e no metodo remove(livro) esse livro entre parenteses é o paramentro que desejamos remover, ou seja, a representação do livro que existe no bando de dados que desejamos remover.

duvida nº 1: Não entendi a dúvida, poderia dar um exemplo ?

Espero ter ajudado! Um Abraço!

A idéia do T é permitir que seja criado um DAO genérico que funcione para qualquer classe do seu sistema, assim você não precisa criar um dao para cada classe. O T é uma convênção para que se possa dizer que no momento da criação do Dao seja passado o tipo da classe, como não definimos o tipo temos que passar um generico para que no momento de execução seja passado o tipo e o java consiga criar o nosso DAO, o exemplo do Cristiano exemplifica bem isso. Na documentação da Oracle eles explicam bem a idéia do generics https://docs.oracle.com/javase/tutorial/java/generics/types.html

Qualquer dúvida mande mais perguntas.

Boa tarde Marcio/Cristiano, primeiramente obrigado pelas respostas, foram bastantes construtivas e me deu segurança no entendimento, sobre a orientação "Muitas dúvidas em um único forum, não é muito legal. Seria melhor criar varios foruns cada um com uma dúvida, fica melhor para discutir o assunto", não sabia como proceder, pensei assim a melhor maneira, para não poluir o local de dúvidas com muitas perguntas do mesmo assunto, mas como querem assim, as próximas dúvidas procurarei desmembrar. Obrigado

Ola Eduardo!

Não se acanhe, crie quantos foruns forem necessários ! ! !

Estamos aqui para estudar juntos e aprender juntos!

Grande Abraço!