Criando objetos em tempo de execução JAVA

4 respostas
java
S

Boa noite, Gostaria de saber se é possível eu criar novos objetos em tempo de execução, pois estou criando um programinha em JAVA e não estou conseguindo criar os objetos de acordo com a necessidade do programa.
Minha duvida é se é possível fazes isso?

Tipo dentro de um laço for (int a=0; a<100; a++){

objeto obj+a = new objeto();

}

algo desse tipo

4 Respostas

P

Prezado, boa noite! Já deu uma pesquisada sobre a API reflection ? https://docs.oracle.com/javase/tutorial/reflect/

wldomiciano

É possível fazer isso:

Object[] objects_a = new Object[10];
for (int i = 0; i < objects_a.length; i++) {
    objects_a[i] = new Object();
}

// Ou isso:

List<Object> objects_b = new ArrayList<>();
for (int i = 0; i < QUANTIDADE_MAXIMA; i++) {
    objects_b.add( new Object() );
}
S

Boa noite, obrigado pela resposta, era isso mesmo q eu queria, porem eu gostaria de ter uma classe assim:

class Dimensao {
public int id; //id crescente do numero
public String nome; //Nome descrição do item
public String material;//Material do item
public String dimensao; // Dimensão do material
public int qtd; // Quantidade de peças
}

e poder gravar esses 5 valores em cada um dos objetos novos que eu criar com o seu comando que vc postou.
Mas eu não consegui fazer isso e não sei se é possível fazer.

wldomiciano

Uma possível solução seria essa:

class Programa {
    private static final int QUANTIDADE_MAXIMA = 10;
    
    public static void main(String[] args) {
        class Dimensao {
            public int id;
            public String nome;
            public String material;
            public String dimensao;
            public int qtd;
        }
        
        Dimensao[] dimensoes_a = new Dimensao[10];
        for (int i = 0; i < dimensoes_a.length; i++) {
            dimensoes_a[i] = new Dimensao();
            dimensoes_a[i].id = 123;
            dimensoes_a[i].nome = "ABC";
            dimensoes_a[i].material = "DEF";
            dimensoes_a[i].dimensao = "HJK";
            dimensoes_a[i].qtd = 456;
        }        
        
        List<Dimensao> dimensoes_b = new ArrayList<>();
        for (int i = 0; i < QUANTIDADE_MAXIMA; i++) {
            Dimensao d = new Dimensao();
            
            d.id = 123;
            d.nome = "ABC";
            d.material = "DEF";
            d.dimensao = "HJK";
            d.qtd = 456;            
            
            dimensoes_b.add( d );
        }
    }
}

No exemplo acima, todas as instancias de Dimensao terão o mesmo valor. Vc teria que definir de onde virão os dados de cada dimensão para fazer sentido.

Se os dados vierão do teclado, vc faria algo parecido com isso:

Scanner scan = new Scanner(System.in);
/* ... */
dimensoes_a[i].id = Integer.parseInt( scan.nextLine() );
dimensoes_a[i].nome = scan.nextLine();
/* ... */
Criado 4 de junho de 2018
Ultima resposta 6 de jun. de 2018
Respostas 4
Participantes 3