Passar o nome da instância por variável

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?

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

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

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

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;
      }
   }
}