cami-la / collections-java-api-2023

Este repositório é referente ao curso "Collection Framework API Java" e é uma valiosa contribuição para a comunidade de desenvolvedores Java, fornecendo exemplos práticos e recursos educacionais relacionados à poderosa API de coleções da linguagem Java.
https://web.dio.me/course/conhecendo-collections-java/learning/c5d6f4e1-6d05-4eea-93d8-d292c708999f
876 stars 636 forks source link

Ungenerics Types #4

Open Aristides-Matoca opened 11 months ago

Aristides-Matoca commented 11 months ago

Olá! Apenas vim deixar uma dica aqui para si e para quem está acompanhando o Bootcamp sobre coleções não genéricas.

Estou usando o Eclipse e notei que para criar um tipo não genérico é necessário adicionar o Object para poder identificar como um tipo não genérico, vou deixar um exemplo aqui usando uma Lista.

List listUngeneric = new ArrayList<>(); listUngeneric .add("collections"); listUngeneric .add(2023);

Muito obrigado!

cami-la commented 11 months ago

Oi, @Aristides-Matoca. Tudo bem? Primeiramente agradeço muito sua contribuição.

Aqui no nosso curso, expliquei sobre a necessidade do Object quando precisamos percorrer uma coleção que não usa generics https://github.com/cami-la/collections-java-api-2023/tree/master/src/main/java/generics

Me diz se te ajuda.

Aristides-Matoca commented 11 months ago

Estou bem, obrigado e tu, @cami-la ?

Na verdade eu entendi tudo isso, porém quando eu tentei fazer exercícios me baseando nos exemplos dados por ti, houve um erro na declaração de uma collection o erro consistia em colocar Object na colletion sempre que a colletion for não genérica

Ou seja, declarando um ArrayList desse jeito: List lista = new ArrayList<>(); //Da erro por não ter declarado o Array como um Object List lista = new ArrayList<>(); //Funciona desse jeito.

Att: De salientar que este erro aconteceu comigo e simplesmente partilhei um alerta caso alguém de depare com a mesma situação.

Aproveitando para agradecer a ti, @cami-la, pela disponibilidade e pelo conhecimento passado. Tem sido um aprendizado enorme

cami-la commented 11 months ago

Ah tá. Entendi! Eu pensei que você não estava entendendo o uso de Collections sem usar o Generics.

E eu quem agradeço por estar fazendo o curso. Faz meu trabalho valer a pena. 💕

Tenta o seguinte: List<> lista = new ArrayList<>(); ou List lista = new ArrayList(); e vê se o erro ainda permanece.

Infelizmente estou sem o Eclipse aqui e não tenho como testar. :(

Não era para apresentar diferenças na forma da declaração mesmo estando usando IDEs diferentes.

Aristides-Matoca commented 11 months ago

Testei agora, ta funcionando. Obrigado

EdilbertoMorais commented 10 months ago

Boa tarde @cami-la , estou iniciando a parte de generics aqui do bootcamp da DIO, e usando o código que você forneceu, no intelliJ ele reclama sobre o uso do cast.

    public static void main(String[] args) {
        // Exemplo de Generics para vários tipos
        List<Object> listaSemGenerics = new ArrayList();
        listaSemGenerics.add("Elemento 1");
        listaSemGenerics.add(10); // Permite adicionar qualquer tipo de objeto
        listaSemGenerics.add(10.1885F);
        listaSemGenerics.add('C');
        listaSemGenerics.add(20.90);

        // Exemplo de Generics do tipo String, neste caso só aceita elementos do tipo String.
        List<String> listaGenerics = new ArrayList<>();
        listaGenerics.add("Elemento 1");
        listaGenerics.add("Elemento 2");
//        listaGenerics.add(10); // Não permite adicionar qualquer tipo.

        // Iterando sobre a lista de Generics do tipo String
        System.out.println("Lista COM Generics do tipo String");
        for (String elemento : listaGenerics) {
            System.out.println(elemento);
        }

        System.out.println();

        // Iterando sobre a lista de Generics de qualquer tipo (não é necessário o uso do CAST)
        System.out.println("Lista COM Generics de qualquer tipo");
        for (Object elemento : listaSemGenerics) {
            System.out.println(elemento);
        }
    }
}

Esta foi a única forma que encontrei para utilizar a List sem ocorrer o erro.

No caso, pelo que entendi pesquisando, não tem como usar a sintaxe:

List listaSemGenerics = new ArrayList( );

agora precisa usar da seguinte forma:

List<Object> listaSemGenerics = new ArrayList();

Poderia me confirmar se é assim mesmo ou estou enganado.

Grato. Edilberto

cami-la commented 10 months ago

Oi, @EdilbertoMorais. Boa tarde. (:

Então, acabei respondendo sua dúvida aqui https://github.com/cami-la/collections-java-api-2023/issues/35#issuecomment-1721684827

Mas essa forma você pode utilizar sim, viu? List listaSemGenerics = new ArrayList( ); Essa é a forma que faziamos antes de existir o Generics. Porém, tinhamos que tratar a possível exceção que é lançada quando fazemos o cast para garantir que na lista temos elementos do mesmo tipo.

EdilbertoMorais commented 10 months ago

Obrigado pela ajuda @cami-la .

Agora ficou claro como devo seguir no dia a dia de trabalho.

cami-la commented 10 months ago

Obrigado pela ajuda @cami-la .

Agora ficou claro como devo seguir no dia a dia de trabalho.

Showww! Qualquer dúvida é só falar. (:

Bons estudos para nós.