Globalcode – Open4educationReaproveitamento de códigoscom Generics
Globalcode – Open4educationApresentação● Mestre em Ciência da Computação● Professor na Universidade do Oeste de Santa Cata...
Globalcode – Open4educationAgenda● Conceito● Surgimento● Vantagens● Padrões● Exemplos● Restrições● Conclusão
Globalcode – Open4educationSurgimento● Java Specification Request - JSR 014● Surgiu na versão 5 do Java para possibilitar ...
Globalcode – Open4educationGenericsSão estruturas quepermitem a escrita deum algoritmo sem apreocupação com ostipos de dad...
Globalcode – Open4educationVantagens● Sem necessidade de cast● Código mais robusto pois o compilador verifica o tipo (type...
Globalcode – Open4educationConvenção● E – Elemento● K – Chave● N – Número● T – Tipo● V – Valor
Globalcode – Open4educationSem Generics
Globalcode – Open4educationClassCastException
Globalcode – Open4educationTratamento
Globalcode – Open4educationCom Generics
Globalcode – Open4educationMétodos sem Generics
Globalcode – Open4educationMétodos sem Generics
Globalcode – Open4educationMétodo Genérico com limiteBounded Type (tipo limitado)T extends Comparable<T>
Globalcode – Open4educationMétodo Genérico com limite
Globalcode – Open4educationClasse Genérica sem limite
Globalcode – Open4educationClasse Genérica com limite
Globalcode – Open4educationClasse Genérica com limite
Globalcode – Open4educationMúltiplos Tipos
Globalcode – Open4educationMúltiplos Tipos
Globalcode – Open4educationLimites
Globalcode – Open4educationWildcards (curinga)● Representado por ?● Indica tipo desconhecido● Usado em: parâmetro, atribut...
Globalcode – Open4educationGenerics x Wildcardsse não existir dependê ncia entreparâ metros e/ou tipos de retorno,deve-...
Globalcode – Open4educationSubTipos● Se o tipo F é subtipo de B● G é um tipo genérico,● G<F> não é subtipo de G<B>
Globalcode – Open4educationErasure (apagamento)● O compilador Java cria uma ú nica representaç ão de bytecode para cada...
Globalcode – Open4educationAntes x Depois Erasure
Globalcode – Open4educationRestrições Generics● Não usar tipos primitivos● Não usar em atributos estáticos● Não usar para ...
Globalcode – Open4educationConclusões● Boa prática de Programação● Segurança e reaproveitamento do código● Compatibilidade...
Globalcode – Open4educationPerguntas
Globalcode – Open4educationReferências● http://docs.oracle.com/javase/tutorial/java/generics/● http://blog.globalcode.com....
Globalcode – Open4educationContato● skype: cristiano.agosti● twitter: @agosti● cristiano.agosti@camtwo.com.br● facebook.co...
Próximos SlideShares
Carregando em…5
×

Reaproveitamento de código com Generics

1.207 visualizações

Publicada em

Minha palestra sobre Reaproveitamento de código com Generics para a trilha Java University do TDC 2013

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Reaproveitamento de código com Generics

  1. 1. Globalcode – Open4educationReaproveitamento de códigoscom Generics
  2. 2. Globalcode – Open4educationApresentação● Mestre em Ciência da Computação● Professor na Universidade do Oeste de Santa Catarina -Unoesc (unoesc.edu.br)● Sócio proprietário da Camtwo Sistemas (camtwo.com.br)● A mais de 10 anos trabalhando com Java e web● Autor do agosti.blog.brCristiano Agosti
  3. 3. Globalcode – Open4educationAgenda● Conceito● Surgimento● Vantagens● Padrões● Exemplos● Restrições● Conclusão
  4. 4. Globalcode – Open4educationSurgimento● Java Specification Request - JSR 014● Surgiu na versão 5 do Java para possibilitar a criação detipos parametrizáveis● Melhoram o mecanismo de tipos da linguagem
  5. 5. Globalcode – Open4educationGenericsSão estruturas quepermitem a escrita deum algoritmo sem apreocupação com ostipos de dados.
  6. 6. Globalcode – Open4educationVantagens● Sem necessidade de cast● Código mais robusto pois o compilador verifica o tipo (typesafe)● Menos erros em tempo de execução● Reaproveitamento de código com programação genérica
  7. 7. Globalcode – Open4educationConvenção● E – Elemento● K – Chave● N – Número● T – Tipo● V – Valor
  8. 8. Globalcode – Open4educationSem Generics
  9. 9. Globalcode – Open4educationClassCastException
  10. 10. Globalcode – Open4educationTratamento
  11. 11. Globalcode – Open4educationCom Generics
  12. 12. Globalcode – Open4educationMétodos sem Generics
  13. 13. Globalcode – Open4educationMétodos sem Generics
  14. 14. Globalcode – Open4educationMétodo Genérico com limiteBounded Type (tipo limitado)T extends Comparable<T>
  15. 15. Globalcode – Open4educationMétodo Genérico com limite
  16. 16. Globalcode – Open4educationClasse Genérica sem limite
  17. 17. Globalcode – Open4educationClasse Genérica com limite
  18. 18. Globalcode – Open4educationClasse Genérica com limite
  19. 19. Globalcode – Open4educationMúltiplos Tipos
  20. 20. Globalcode – Open4educationMúltiplos Tipos
  21. 21. Globalcode – Open4educationLimites
  22. 22. Globalcode – Open4educationWildcards (curinga)● Representado por ?● Indica tipo desconhecido● Usado em: parâmetro, atributo, variável ou retorno demétodo● Não usar em: parâmetro para métodos genéricos● Limites descendente <? extends T>● Limites ascendente <? extends T>
  23. 23. Globalcode – Open4educationGenerics x Wildcardsse não existir dependê ncia entreparâ metros e/ou tipos de retorno,deve-se preferir curingas
  24. 24. Globalcode – Open4educationSubTipos● Se o tipo F é subtipo de B● G é um tipo genérico,● G<F> não é subtipo de G<B>
  25. 25. Globalcode – Open4educationErasure (apagamento)● O compilador Java cria uma ú nica representaç ão de bytecode para cada tipo genérico ou método genérico● Todas as instanciaç ões dos Generics são mapeadas paraessa representaç ão usando uma técnica chamada deApagamento (Erasure)
  26. 26. Globalcode – Open4educationAntes x Depois Erasure
  27. 27. Globalcode – Open4educationRestrições Generics● Não usar tipos primitivos● Não usar em atributos estáticos● Não usar para cast ou instanceof● Não usar em catch ou throw● Não criar instancias T valor = new T();● Não criar arrays T[ ] a = new T[10];● Não aceita sobrecarga
  28. 28. Globalcode – Open4educationConclusões● Boa prática de Programação● Segurança e reaproveitamento do código● Compatibilidade com código legado● Simplicidade e Robustez
  29. 29. Globalcode – Open4educationPerguntas
  30. 30. Globalcode – Open4educationReferências● http://docs.oracle.com/javase/tutorial/java/generics/● http://blog.globalcode.com.br/2011/11/type-inference-no-java-7-generics-com.html● Java Generics and Collections - Maurice Naftalin. EditorOReilly.
  31. 31. Globalcode – Open4educationContato● skype: cristiano.agosti● twitter: @agosti● cristiano.agosti@camtwo.com.br● facebook.com/cristiano.agosti● agosti.blog.br

×