[RESOLVIDO]O que estou fazendo de errado?

8 respostas
java
Junior_Leles
Olá, estou com problema com o código abaixo:

import java.util.ArrayList;

import java.util.List;
public class Empresa {

private int id;

private String nome;
List<Empresa> listaDeEmpresas = new ArrayList<Empresa>();

public Empresa() {
	Empresa e1 = new Empresa(); //Linha 13 - Onde está acusando o erro
	e1.setId(1);
	e1.setNome("Empresa 1");
	e1.listaDeEmpresas.add(e1);

	Empresa e2 = new Empresa();
	e2.setId(2);
	e2.setNome("Empresa 2");
	e2.listaDeEmpresas.add(e2);

}

public int getId() {
	return id;
}

public void setId(int id) {
	this.id = id;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public List<Empresa> getEmpresas() {
	return listaDeEmpresas;
}

public static void main(String[] args) {
	Empresa e = new Empresa(); //Linha 46 - Onde está acusando o erro
	List<Empresa> empresas = e.getEmpresas();

	for (Empresa empresa : empresas) {
		System.out.println(empresa.getId() + " - " + empresa.getNome());
	}
}

}

Ao rodar a aplicação, recebo o seguinte erro:



at br.com.estudo.gerenciador.model.Empresa.(Empresa.java:13)

at br.com.estudo.gerenciador.model.Empresa.main(Empresa.java:46)

Porém não consigo ver o que está errado. Gostaria de contar a ajuda de vocês, por gentileza. Desde já agradeço a todos que puderem ajudar.

8 Respostas

TerraSkilll

Poste a mensagem de erro completa, ou ao menos a linha que mostra a exceção. Só com o que você postou, dá pra ver que tem um erro na linha 13, mas sem saber qual é, fica difícil ajudar.

Abraço.

Jonathan_Medeiros

Coloca esse código dentro do main.

Junior_Leles

Olá Jonathan, obrigado pela disposição para ajudar! :slight_smile:

Eu gostaria que fossem criadas duas instâncias de Empresa assim que o trecho de código da linha 46 fosse executado. Por isso a criação das duas instâncias foi declarada no construtor da classe.

Junior_Leles

Olá, obrigado pela disposição para ajudar! :slight_smile:

Coloquei um comentário para sinalizar as linhas onde está acusando erro.

TerraSkilll

Ainda faltou você colocar a mensagem de erro. Mas, olhando seu código, me parece que é StackOverFlowError ou algo similar. Isso porque, no construtor da classe Empresa, você cria outro objeto Empresa, que cria outro objeto Empresa, que cria outro objeto Empresa, que cria outro objeto Empresa… , e assim sucessivamente num loop infinito, até dar erro.

Como sugerido pelo Jonathan_Medeiros, você precisa colocar o código que está no construtor em algum outro lugar, possivelmente dentro do método main. Senão, inúmeras instâncias de empresa serão criadas.

Abraço.

Jonathan_Medeiros

Você cria o mesmo objeto que é a própria classe no construtor dela mesma, isso vira um loop infinito…

Repense sua lógica aí.

Junior_Leles

Olá TerraSkilll!

Você tem razão, está dando loop infinito. Erro de lógica!

Muito obrigado pela ajuda!

Abraços

Junior_Leles

Você tem toda razão Jonathan_Medeiros, estou com um erro de lógica.

Obrigado pela ajuda!

Abraços

Criado 8 de junho de 2019
Ultima resposta 8 de jun. de 2019
Respostas 8
Participantes 3