Por que new long compila?

9 respostas
jgbarros

Por quê essa instrução compila?

Object AS = new long[4];

Tudo bem que AS é um array, mas como instancia-lo e acessa-lo?
// Essa linha não funciona!
as[0] = 21;

9 Respostas

ViniGodoy

Todo array é também um objeto.

Você pode entender que em algum lugar nas entranhas da VM existe algo assim:

class long[] extends Object

Você não consegue acessar a linha pois está enxergando o vetor AS como Object, e não como long[]. E Object não tem definido o operador [].

ViniGodoy

Para acessa-lo, você precisa de um cast. Tente isso:

Object arrayDeLong = new long[10]; ((long[])arrayDeLong)[0] = 21; System.out.println(((long[])arrayDeLong)[0]);

LuizAvila

jgbarros:
Por quê essa instrução compila?

Object AS = new long[4];

Tudo bem que AS é um array, mas como instancia-lo e acessa-lo?
// Essa linha não funciona!
as[0] = 21;

Vc cria AS

e chama as

java é case sensitive com nomes de variáveis… :stuck_out_tongue:

jgbarros

Valeu a explicação ViniGodoy!

LuizAvila, o lance do ‘as’ foi só aqui, na minha app tava certo e dando o erro ‘array required, but java.lang.Object found’

Lendo o livro da KATHY SIERRA, achei esse new long[] num exercício, nunca mais esqueço! :smiley:

Raff

jgbarros você está estudando para a certificação [url]?

jgbarros

Tô sim Raff. Comprei o voucher e devo fazer em março, pq quero me preparar bem! Não sei nem pq, trabalho com Java a 5 anos … :lol:

Antes o problema é que em Cuiabá não tinha centro prometric … agora tem! Economia o $ da passagem e da hospedagem!

:stuck_out_tongue:

Vecchiato

jgbarros esse livro da kathy sierra tem bastante erro de português? ou ja arrumaram na edição 2?
by the way, compro esse livro aqui em cbá ou compro pela net?

:smiley:

jgbarros

Vecchiato:
jgbarros esse livro da kathy sierra tem bastante erro de português? ou ja arrumaram na edição 2?
by the way, compro esse livro aqui em cbá ou compro pela net?

:D

Bom Vecchiato, eu comprei no submarino, mesmo com o frete aqui saia um pouco mais caro! Nessa edição revisada não encontrei erros, pra mim parece bom. Estou gostando bastante do livro, não recomendo o do Roberto Rubinstein, tem mto erro e não é didático, pra mim mais parece um livro caça-níquel!
:smiley:

LPJava

e a questao que nao tipo primitivo… e eh comum sempre confudir foi o que aconteceu… ai vc confudiu new long com o tipo primitivo long nesse caso vc tem um objeto array que aceita elemento do tipo primitivo long. Leia dessa forma que facilita a compreensão.

int[] inte = new int[2]; // tenho um objeto array inte que aceita elemento do tipo int e no maximo 2.

double[]dou = new double[3]; // vc completa aqui

flw!

Criado 1 de novembro de 2007
Ultima resposta 22 de nov. de 2007
Respostas 9
Participantes 6