collections-java-api-2023 icon indicating copy to clipboard operation
collections-java-api-2023 copied to clipboard

Ungenerics Types

Open Aristides-Matoca opened this issue 2 years ago • 8 comments

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<Object> listUngeneric = new ArrayList<>(); listUngeneric .add("collections"); listUngeneric .add(2023);

Muito obrigado!

Aristides-Matoca avatar Aug 13 '23 19:08 Aristides-Matoca

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.

cami-la avatar Aug 13 '23 21:08 cami-la

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<Object> 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

Aristides-Matoca avatar Aug 13 '23 21:08 Aristides-Matoca

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.

cami-la avatar Aug 13 '23 21:08 cami-la

Testei agora, ta funcionando. Obrigado

Aristides-Matoca avatar Aug 13 '23 22:08 Aristides-Matoca

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

EdilbertoMorais avatar Sep 15 '23 17:09 EdilbertoMorais

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.

cami-la avatar Sep 15 '23 18:09 cami-la

Obrigado pela ajuda @cami-la .

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

EdilbertoMorais avatar Sep 15 '23 20:09 EdilbertoMorais

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.

cami-la avatar Sep 15 '23 21:09 cami-la