Passar o nome da instância por variável

3 respostas
L

class Carro {

String nome;
int ano;

Carro (String pNome,int pAno) {

nome = pNome; ano = pAno;

}
Carro Fiat = new Carro(Uno,1994);

Carro ww = new Carro(Fusca,1970);

Carro Ford = new Carro (Mustand,1964);

Carro GM = new Carro (Chevete,1970);

}

Nesse exemplo eu tive que escrever a linha de criação de instância 4 vezes. Eu queria escrevê-la apenas uma vez e ter uma variável onde eu colocasse o nome das marcas.

Ex.: Carro NomeMarca = new Carro(NomeCarro,AnoCarro);

Ai eu não teria que escrever 4 vezes a linha de criação de instância.
NomeCarro e AnoCarro eu consigo passar por parâmetro tranquilamente, mas e o NomeMarca? Não dá, ele acha que o nome da instância é NomeMarca literalmente e não o valor da variável NomeMarca.

Deu para entender o que eu quero?

Como resolver isso?

3 Respostas

Rafael_Guerreiro

Basta colocar a variável como parâmetro no construtor.

String nomeDoJogo = "Dota"; Jogo jogo = new Jogo(nomeDoJogo);

L

Mas no seu exemplo você está criando uma instância chamada “jogo”.

Rafael_Guerreiro

Isso não é possível. O nome da instância não deveria ser passada.
Pois na verdade, podemos ter vários nomes para o mesmo objeto, rode esse código para ver isso:

public class Teste {
   public static void main (String[] args) {
      TesteClasse teste1 = new TesteClasse("teste1 - esse aqui é o conteúdo da classe");
      TesteClasse teste2 = teste1;

      System.out.println(teste1.getConteudo());
      System.out.println(teste2.getConteudo());

      System.out.println(teste1.toString()); // Printa o endereço de memória do objeto
      System.out.println(teste2.toString()); // Se esse for igual, significa que é o mesmo objeto.
   }

   static class TesteClasse {
      private final String conteudo;

      public TesteClasse(String conteudo) {
         this.conteudo = conteudo;
      }

      public String getConteudo() {
         return conteudo;
      }
   }
}
Criado 2 de julho de 2015
Ultima resposta 3 de jul. de 2015
Respostas 3
Participantes 2