1. Introdução
- Código que usa o método ordinal para indexar um array ou lista.
2. Problema com o uso de ordinais
- Código de exemplo com array indexado pelo ordinal do ciclo de vida de uma planta.
- Arrays não são compatíveis com genéricos, resultando em cast não verificado.
- Necessidade de rotulação manual da saída.
- Perigo de usar valores int incorretos, levando a erros silenciosos ou exceções.
3. Solução com EnumMap
- EnumMap como uma alternativa mais eficiente e segura.
- Programa reescrito utilizando EnumMap.
- Benefícios: código mais curto, claro, seguro e sem necessidade de rotulação manual.
4. Detalhes sobre EnumMap
- EnumMap utiliza um array internamente, combinando a segurança de Map com a rapidez de um array.
- Construtor de EnumMap requer um objeto Class do tipo da chave (token de tipo limitado).
5. Uso de streams com EnumMap
- Programa usando streams para gerenciar o map.
- Problema: implementação de map escolhida pelo stream pode não ser uma EnumMap.
- Solução: uso da forma de três parâmetros do Collectors.groupingBy para especificar a implementação de map.
6. Comparação de comportamentos
- Diferenças de comportamento entre versões com EnumMap e baseadas em stream.
- EnumMap sempre cria um map aninhado, enquanto streams criam apenas se necessário.
7. Caso de uso avançado: mapeamento de dois valores enum
- Exemplo de array de arrays indexados por ordinais para transições de fases.
- Problemas semelhantes: risco de erro na tabela de transição, manutenção difícil.
8. Solução avançada com EnumMap
- Uso de EnumMap para mapear transições de fases.
- como tipo do map.
- Inicialização do map com coletores encadeados.
- Image description
9. Adição de novas fases
- Adicionar novas fases ao sistema com EnumMap é simples e seguro.
- Comparação com a complexidade de atualização de arrays.
10. Cuidados com valores nulos
- Uso de null para indicar ausência de mudança de estado é arriscado.
- Necessidade de uma solução limpa para evitar NullPointerException.
11. Conclusão
- Raramente adequado utilizar ordinais para indexar arrays.
- Preferência pelo uso de EnumMap, especialmente para relacionamentos multidimensionais.
Resumo Final
- Não use ordinais para indexar arrays.
- Prefira EnumMap para segurança, clareza e facilidade de manutenção.
- Considere EnumMap<..., EnumMap<...>> para relacionamentos multidimensionais.
Top comments (0)