Casa > C > Como Se Adiciona Múltiplos Tipos De Objetos A Uma Arraylist?

Como se adiciona múltiplos tipos de objetos a uma arrayList?

Existe realmente um caso em que você pode realisticamente adicionar múltiplos tipos de objetos a uma ArrayList em Java.

ArrayList

Se você não especificar um tipo para a ArrayList, ou se você especificar o tipo a ser Objeto, qualquer objeto (por exemplo Dog ou String como na sua pergunta) poderia ser adicionado ao ArrayList.

ArrayList

Se você especificar o tipo como uma superclasse dos objetos que serão adicionados (ou interface que todos eles implementam), qualquer objeto que se encaixe nesse tipo poderá ser adicionado. Por exemplo, se você tivesse duas classes chamadas Cat e Dog que ambas estendessem a superclasse Pet, você poderia adicionar objetos de ambos os tipos Cat e Dog ao ArrayList.

Em ambos os casos acima, isto é por causa da herança. Como cada objeto é uma subclasse de Objeto, todos eles correspondem ao tipo de Objeto especificado. Como Cats and Dogs são Pets, todos eles combinam com o tipo de Pet especificado.

Agora porque existe apenas um caso realista?

Presumo que você vai querer chamar métodos nos diferentes objetos da sua ArrayList. Entretanto, isso seria muito difícil sem conhecer os tipos de cada um dos objetos, pois um método que existe para uma classe pode não existir para uma classe diferente, e é por isso que um tipo é tipicamente especificado para se encaixar em todos os elementos.

Baseado no conceito de polimorfismo, usando uma ArrayList com o tipo como uma superclasse ou interface funciona porque subclasses/classes que implementam a interface devem ter certos métodos herdados da superclasse ou interface. Por exemplo, digamos que a classe Pet tem um método .getSpecies() que ambas as subclasses herdam, mas o código dentro do método para a classe Cat retorna "Cat" e o método para a classe Dog retorna "Dog". Esse método pode ser chamado nos elementos da ArrayList porque é definido para a superclasse e, portanto, as subclasses devem tê-lo. As subclasses substituem o método da superclasse, e durante o tempo de execução, Java calcula qual tipo é através do polimorfismo dinâmico e a versão da subclasse para cada uma será executada corretamente.

Uma ArrayList de Objetos não é útil, pois a classe Object só tem métodos muito gerais, e não seria possível chamar métodos específicos para as classes dos objetos que foram adicionados. Em vez disso, se você tivesse uma ArrayList do tipo Object e tentasse chamar .getSpecies() em um elemento, o compilador provavelmente mostraria uma linha com um traço vermelho apontando o erro de que a classe Object não tem esse método.

Outras questões

Se você estivesse perguntando como criar múltiplas ArrayLists, cada uma com um tipo diferente de objeto, o código usado seria ArrayList name = new ArrayList(); e você pode especificar Type como desejado. Each element added must then be of that type.

Don’t be afraid to create multiple lists if needed, and best of luck!

De Diley

O que é um telemóvel maluco? :: O Meizu V8 Pro suporta VoLTE duplo 4G VoLTE?