Executando verificação de segurança...
2

[DÚVIDA] Declarando uma varíavel em Java

Poderiam me explicar alguns pontos?
Com base nessa linha:

List<Object> obj = new ArrayList<Object>();
  1. O que significa a declaração antes de "obj"?
  2. O que significa a declaração depois do "="?
  3. Que tipo e que classe é o "obj" depois dessa linha?

Estou com dúvida porque, ao criar um objeto ArrayList, o código passou que o tipo dele é List, o que me deixou muito em dúvida pq List é uma interface, então nem deveria ser possível ter um objeto assim

HELP.

Carregando publicação patrocinada...
2

Não sou dev Java mas acredito que seja igual ao C#:

  1. O lado esquerdo é o tipo da variavel, provavelmente você pode trocar por var (isso vai fazer o compilador declarar o mesmo tipo do lado direito).
  2. O lado direito é de fato a variavel que foi criada, a instancia.
  3. Se tornou List pq vc declarou como List, visto que ArrayList é uma implementação de List, ta tudo ok. A variavel object vai aceitar qualquer tipo que implemente a interface List mas você vai poder usar apenas os metodos de List.
1
2

A declaração antes de "obj" significa que você esta utilizando a class List para guardar objetos do tipo *obs: o tipo object é o tipo mais genérico de todos, este tipo de declaração não é aconselhável pois para ler os dados deste objeto posteriormente você precisara fazer um "Cast" ou seja transformar este tipo generico de classe em um tipo específico. Isto é possível devido ao polimorfismo, mas lembre-se só é possível fazer isto pois a classe atribuida "ArrayList" não é uma interface e nem uma classe abstrata.

O simbolo "=" significa atribuição, ou seja você está atribuindo uma instância de ArrayList() a variável obj do tipo "List". Esta atribuição é aceitável pois o tipo ArrayList estende a classe List o que permite fazer esta implementação.

Como dito anteriormente esta classe Object é o tipo mais genérico em java, ou seja todas as classes existentes derivam se da class Object, o que significa que sua lista pode armazenar qualquer classe em java, porém com os malefícios de precisar fazer um "Cast" toda vez que precisar ler ou recuperar esta variável.

1
1