Duvidas Java

Bem, surgiu mais uma duvida, vou tentar explicar:

Tenho um switch dentro de um while que repete infinitamente, algo assim:

Código:
while (sair != true) {
	Scanner inScanner =  new Scanner(in);
	char escolha = inScanner.findInLine(".").charAt(0);
	switch (escolha) {
	case 'a': (...) break;
	case 'b': (...) break;
	}
}

E preciso que cada vez que se active o case a, seja criado um novo objecto, sempre da mesma classe, e claro com nome diferente.
Como é que posso fazer isto? Será que me está a escapar qualquer coisa?

E depois, como é que posso aceder aos métodos de cada objecto, de forma a que seja o utilizador a escolher qual o objecto em que pretende invocar o método?

Isto cheira-me que me está a escapar algo muito simples mas pronto... espero que tenham percebido ;)
 
O que pedes é impossível. Podes criar os vários objectos, adicioná-los a um Set ou ArrayList, cada um tendo um atributo nome; quando o utilizador quer efectuar alguma acção sobre um objecto, insere o seu nome, e procuras na ArrayList ou no Set o objecto com esse nome. É a solução mais simples que me ocorre agora.
 
O que pedes é impossível. Podes criar os vários objectos, adicioná-los a um Set ou ArrayList, cada um tendo um atributo nome; quando o utilizador quer efectuar alguma acção sobre um objecto, insere o seu nome, e procuras na ArrayList ou no Set o objecto com esse nome. É a solução mais simples que me ocorre agora.

Também me estava a parecer isso, procurei e não encontrei nada parecido com o que eu pretendia. Vou explorar isso da ArrayList, obrigado pela ajuda.
 
Última edição:
Um ArrayList e' um vector usado para guardar qualquer tipo de objectos.

Podes tambem usar <Tipo-De-Objecto> para que o ArrayList apenas permite guardar objectos da classe 'Tipo-De-Objecto'.

Em relação ao nome dos objectos, e' como o souto disse.. A melhor opção e' criares objectos com um atributo que seja um nome (tipo String), e arranjares uma maneira de o nome ser criado 'na hora'. Por exemplo através da data do sistema, é uma hipótese..

Boa sorte!
 
A coisa do array funcionou na boa.

Mas agora tenho outra duvida... esta deve ser rapida de responder... :P
Como é que eu posso chamar um método do objecto1 da classeA dentro da classeB?
De referir que o objecto1 (instancia da class) já tinha sido criado anteriormente na class main.

Eu pensei que era só escrever na classeB normalmente: objecto1.metodo();
Mas o compilador diz "objecto1 cannot be resolved".
Então inventei e escrevi antes disso: classeA objecto1;
Assim o compilador já não dá erro, mas dá erro a correr a aplicação, objecto1 = null.

O que é que me está aqui a falhar desta vez?
 
Última edição:
Precisas de criar uma instancia da class, o que fizeste foi dizer que a variavel objecto1 era do tipo classeA, para criares objectos usas o new.

Para esse caso o que tu queres é (ja com declaração e atribuição)
classeA objecto1 = new classeA();
 
Precisas de criar uma instancia da class, o que fizeste foi dizer que a variavel objecto1 era do tipo classeA, para criares objectos usas o new.

Para esse caso o que tu queres é (ja com declaração e atribuição)
classeA objecto1 = new classeA();

lol sim eu sei isso, não me fiz explicar bem.
O objecto já tinha sido criado na class main. Eu apenas quero conseguir aceder aos seus métodos, tendo em conta o que eu disse no post anterior (que já editei para explicar melhor)
 
Se bem entendi o que queres é enviar para a class B o objecto que ja criaste noutra classe. Nada mais simples, passas o objecto para a class B. Podes passar inclusive no construtor.

Passo a exemplificar
Código:
class A {}
class B {
   A obj1;
   B (A obj1) {
      this.obj1 = obj1;
   }
}

Agora ao criares um objecto da class B tens que lhe dar um objecto da classe A,
exemplo
Código:
A objectoA = new A();
B objectoB = new B(objectoA);


Agora dentro da class B já podes usar o objecto criado na main através do field obj1.
 
Obrigadão!

Não consegui usar como tu puseste no teu exemplo porque não se adaptava à situação, mas a dica deu-me as luzes que precisava para chegar lá ;)
 
Back
Topo