[RESOLVIDO] Instanciando um objeto com array, duvida!

class Sala {

  Sala() {

  Mesa[] mesa = new Mesa[5];
  mesa[0] = mesa ....
    
  }
  • Como faço para setar valores num array do tipo mesa…como continuo a declarar?

Um array (vetor) nada mais é que uma sequência de referências a objetos (ou tipos primitivos) de mesmo tipo.
Isso significa que, quando você define um vetor de Mesa, está, apenas, dizendo que cada uma daquelas posições vai apontar para um objeto do tipo mesa.
De alguma forma, está dizendo a toda estrutura que está em uso que precisa de N espaços exatamente do tamanho de um objeto mesa cada um.

Mesa[] mesas = new Mesa[5].

Na linha acima, você diz que precisa de 5 espaços capazes de armazenar objetos do tipo mesa.
Mas, como você ainda não disse a quais objetos estes espaços se referem, eles se encontram nulos. Os espaços existem, mas não há nenhuma mesa em nenhum deles.

mesas[0] = new Mesa();

Na linha acima, você está dizendo que a posição 0 estará recebendo um novo objeto do tipo mesa (eu presumo que há um construtor padrão e que você vai setar os atributos posteriormente). Para cada posição reservada, é preciso fazer o mesmo processo (salvo se você quiser apontar mais de uma posição para o mesmo objeto, aí é só fazer como abaixo)

mesa[0] = new Mesa();
mesa[1] = mesa[0];

Entendeu?

Sensacional @darlan_machado, melhor q isso impossivel! A ideia é q eu tenho um construtor e q qfo instancio sala…as mesas sejam criadas. Fiz atraves de um for. Minha duvida na verdade bateu em duas situacoes:
Primeira: se eu conseguiria setar depois um valor para mesa na posicao [0] tipo criei (new) será depois que conseguiria dizer q aquela mesa na posiçao zero é a posiçao mesa 1, tipo atribuir um “int” numa variável do tipo Mesa?


Daí depois tive uma duvida q na verdade passou por mim ontem ao ler uma reposta aqui no forum…


O cara dava" …[0] = new mesa()" exemplo! Era algo bem parecido com meu exemplo…e achei interessante a resposta q un integrante do forum deu. Ele disse q se a declaracao fosse nesses moldes…
Os valores nao seriam setados dentro do mesmo array…pq a cada new ele estaria instanciando um novo objeto digamos com um vetor de uma unica posicao e unico valor…o que para mim fez todo sentido…


Nao sei se entendeu minhas indagaçoes…
Sua resposta foi bem esclarecedora. Obrigado por dedicar alguns minutos para responder :slight_smile:

Considere isso

public class Mesa {
    private int numero;
    private int totalLugares;
   //getters e setters omitidos
}

Se a tua mesa for parecida com a de cima:

Mesa[] mesas = new Mesa[5];
mesas[0] = new Mesa();
mesas[0].setNumero(1);
mesas[0].setTotalLugares(4);

Assim você consegue.

Entendi…
Tenho q criar os atributos de mesa…gerar os getters e setters dos atributos e depois setar…
Mto obrigado :slight_smile:
Sensacional explicaçao!

Darlan…
Boa noite…
Rapaz…vou socorrer aos seus super poderes de Java.
Abri um topico…mas como vc se mostrou prestativo como na ultima vez…
Queria ver se vc podia me ajudar com um erro q estou tomando ao rodar o javafx.
Configurei…mas qdo tentei rodar deu esse erro aí do anexo.
Se puder depois me dar uma ajuda de como resolver essa exception…
Ficarei grato…e te devendo mais uma…hehe

Posta o código e texto ao invés de fotos.

Você está tentando executar uma classe chamada SDK.
Tem que executar a classe que você chamou de Main.

Pois é…
Só fiz seguir um tutorial…tutorial de um curso na udemy q ensina a usar o javafx!
No tutorial ele executa…o codigo ta identico…no tutorial qdo ele dá run no codigo…abre uma janela do javafx

Penso que pode ser problema de versao do SDK

Precisa ter o jdk com o javafx, senão, não funciona.

Consegui…vlw Darlan!