Nomeando Objetos em JAVA

Boa tarde, estou com um pequeno problema na hora de declarar nomes de objetos em JAVA.
É o seguinte, preciso criar um “programa” onde se armazena N contas, e suas informações.
Pra isso coloquei um loop que vai até o usuário decidir que não quer mais abrir contas.
A primeira conta eu crio como ContaBanco c1 = new ContaBanco(); e até aí tudo bem, o problema é que nas próximas repetições do loop eu preciso que este nome mude para c2, c3, c4 etc… Ou seja, ContaBanco c1…(); Conta banco c2…(); de acordo com o estágio do loop. Existe alguma forma de fazer isso? Caso tenha, como eu também automatizaria a parte dos Setters e Getters para que mudem de acordo com o loop? Acredito que seja na mesma lógica.

Então amigo, não é possivel criar variaveis dinamicamente dessa forma, o que você poderia fazer é usar uma variavel, para cada conta que o cliente criasse, vc criar uma nova instancia e armazenava em um array.

1 curtida

Dá para associar cada objeto à uma chave de um mapa:

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class Teste {

    private class ContaBanco {
        
        String dono;
        String tipo;
        double saldo;

        @Override
        public String toString() {
            return String.format( "%s (%s): R$%.2f" , dono, tipo, saldo );
        }
        
    }
    
    private void teste() {
        
        // mapa implementado como uma tabela de dispersão
        Map<String, ContaBanco> contas = new HashMap<>();
        
        // ou
        
        // mapa implementado como uma tabela de dispersão com order de iteração
        // previsível.
        //Map<String, ContaBanco> contas = new LinkedHashMap<>();
        
        // ou
        
        // mapa implementando usando uma árvore vermelho-preto.
        //Map<String, ContaBanco> contas = new TreeMap<>();
        
        for ( int i = 0; i < 10; i++ ) {
            
            ContaBanco c = new ContaBanco();
            c.dono = "Jão " + i;
            c.tipo = "CP";
            c.saldo = 100 * i;
            
            contas.put( "c" + i, c );
            
        }
        
        System.out.println( "ContaBanco c7: " + contas.get( "c7" ) + "\n" );
        
        for ( Entry e : contas.entrySet() ) {
            System.out.println( e.getKey() + ": " );
            System.out.println( "    " + e.getValue() );
        }
        
    }
    
    public static void main( String[] args ) {
        new Teste().teste();
    }
    
}
1 curtida

Muito bacana ! Vou estudar um pouco sobre como funciona os Mapas e volto pra tentar resolver. Muito obrigado, salvou demais !