Arrays

oi pessoal…!!

eu tenho uma duvida sobre arrays…!

kuando eu faco as seguintes declaracoes:

int a[]=new int[10];

Object elem[];

A minha dificuldade surgiu ao implementar stack com arrays:
veja o seguinte trecho de codigo:

public Object topAndPop() throws StackException
{
	if(isEmpty()) 
	throw new StackException("nao existe topo pois stack esta vazia");
	else
	{
		indTopo--;// o mesmo indTopo=indTopo-1;
		return elem[indTopo+1];

	}
	 	}

O MEU PROBLEMA ESTA NA PALAVRA ‘Object’
porque e que colocamos a palavra ‘Object’ na declaracao do metodo “public Object topAndPop()” ?

Eu suponho que seja porque:
1-Por ter delarado o array ‘Object elem[]’ como array de objectos isto e para guardar objectos;
2-em consequencia da alinea 1) o metodo topAndPop ira devolver um objecto e nao um inteiro e nao outro tipo qualquer.

Para concluir se eu quiser armazenar um inteiro dentro do meu stack tenho que primeiro fazer um casting?
visto que eu preparei o array apenas para objectos

Olá Steven,

naturalmente, ao declarar os elementos (array elem) e o método topAndPop como do tipo Object, você está determinando o tipo básico da fila.
Object é a classe da qual todas as outras classes são subclasses, é um objeto genérico. Obviamente, você não pode utilizar int, char para essa fila especificamente, pois esses são tipos básicos, não são objetos (na implementação Java).

Você tem duas alternativas:

  1. Você cria uma classe base, com um membro de dados, e então pode fazer push/pop, e armazenar esses objetos na pilha, pois qualquer classe é subclasse de Object.
  2. Você não usa Object na declaração de elem e das operações, e sim diretamente o tipo que você considera como base de sua pilha.

Espero ter esclarescido sua dúvida.

Recomendo fortemente a leitura desse tópico, que explica um pouco melhor a pilha:
http://www.guj.com.br/posts/list/55235.java#289988