Object [][]

6 respostas
R

pq um Object [][] é um array generico ??? nao entendi ! como isso é possivel ?

Object nao é uma classe ? pq ele assume tipos (String, int, doble …) ?

6 Respostas

S

Devias especificar bem a pergunta, não entendi direito.
mas…
Object é um tipo que aceita todos os valores possiveis em java. Porque é o super tipo ( super class mãe pai , avò e bisavo :slight_smile: ).
Todos os tipos em java são subtipos de object.

ViniGodoy

Todas as classes em Java derivam de Object. Sem exceção.

Mesmo que você faça:

public class Cachorro extends Mamifero { }

Cachorro irá derivar de Mamifero, que por sua vez deriva de Object, logo, Cachorro também deriva de Object.

Como é possível fazer:

Mamifero m = new Cachorro();

Será possível guardar qualquer objeto dentro de um array de
Object[].

Entretanto, não será possível guardar ali tipos primitivos. Ou seja, os tipos boolean, byte, short, char, int, float, long e double não podem ser guardados dentro desse array. Pelo menos, não sem conversão.

Quando você faz:

double x = 10; Object[] array = new Object[10]; array[0] = x;

O java fará uma conversão automática na linha 3, desde que seja uma versão de Java superior ao Java 5. Aquela variável x será convertida no tipo Double, com D maísculo, que é uma classe que simplesmente guarda um double dentro. E, por se tratar agora de um objeto, ele poderá ser guardado no array. No java 4 e anteriores, aquela linha te daria um erro de compilação, e você teria que fazer explicitamente o que o Java 5 faz por baixo dos panos, isso aqui:

double x = 10; Object[] array = new Object[10]; array[0] = Double.valueOf(x);

R

ViniGodoy:
Todas as classes em Java derivam de Object. Sem exceção.

Mesmo que você faça:

public class Cachorro extends Mamifero { }

Cachorro irá derivar de Mamifero, que por sua vez deriva de Object, logo, Cachorro também deriva de Object.

Como é possível fazer:

Mamifero m = new Cachorro();

Será possível guardar qualquer objeto dentro de um array de
Object[].

Entretanto, não será possível guardar ali tipos primitivos. Ou seja, os tipos boolean, byte, short, char, int, float, long e double não podem ser guardados dentro desse array. Pelo menos, não sem conversão.

Quando você faz:

double x = 10; Object[] array = new Object[10]; array[0] = x;

O java fará uma conversão automática na linha 3, desde que seja uma versão de Java superior ao Java 5. Aquela variável x será convertida no tipo Double, com D maísculo, que é uma classe que simplesmente guarda um double dentro. E, por se tratar agora de um objeto, ele poderá ser guardado no array. No java 4 e anteriores, aquela linha te daria um erro de compilação, e você teria que fazer explicitamente o que o Java 5 faz por baixo dos panos, isso aqui:

double x = 10; Object[] array = new Object[10]; array[0] = Double.valueOf(x);

muito obrigado pela resposta
valeu msm

agora deixa eu ver c eu entendi

a JVM faz a converção automatica que retorna o tipo convertido em forma de Objeto q por sua vez podera ser armazenado em uma array do tipo Object ?

ViniGodoy

Para os tipos primitivos, a JVM fará conversão automática (isso é chamado de autoboxing).
Para os objetos, não há conversão. Como todos são filhos de Object, um array de Object poderá conter qualquer objeto, de qualquer classe. Se não entende pq, estude as regras de herança e polimorfismo.

R

Para os tipos primitivos, a JVM fará conversão automática (isso é chamado de autoboxing).
Para os objetos, não há conversão. Como todos são filhos de Object, um array de Object poderá conter qualquer objeto, de qualquer classe. Se não entende pq, estude as regras de herança e polimorfismo.

eu entendi para objetos pode ser qualquer objeto pois Object é a classe pai de qualquer classe.

agora o que eu nao entendi é o seguinte pq é utilizado a palavra Object ja q a conversao de tipo primitivo é feita pela JVM pq nao foi criada um palavra reservada para este uso, tipo:

generico[] ?

Rafael_Marques1

Provavelmente, por se tratar de uma linguagem orientada a objetos, eles definiram as características que qualquer objeto deve ter, e chamaram esta classe de Object.

Como qualquer classe em java, deriva de Object, qualquer objeto É UM Object

Criado 1 de março de 2010
Ultima resposta 1 de mar. de 2010
Respostas 6
Participantes 4