I'm using a context where I have a variable of type array with reference to another class. When trying to declare the object-instantiated class and declare its size this error is returned and I would like to understand why:
non-static variable can not be referenced from a static context
The error line is e1.empregados = new Funcionario[TAM];
in:
public class EmpresaTest
{
public static int posicao = 0;
public static boolean t = true;
public final int TAM = 5;
public static void main(String[] args)
{
Funcionario f1 = new Funcionario();
Funcionario f2 = new Funcionario();
Funcionario f3 = new Funcionario();
Funcionario f4 = new Funcionario();
Empresa e1 = new Empresa();
e1.empregados = new Funcionario[TAM];
t = Booelan.parseBoolean(e1.adicionaEmpregado(f1));
System.out.println("T: " + t);
e1.adicionaEmpregado(f2);
e1.adicionaEmpregado(f3);
e1.contemFuncionario(f1);
e1.contemFuncionario(f2);
e1.contemFuncionario(f3);
e1.contemFuncionario(f4);
/*e1.empregados[0] = f1;
e1.empregados[1] = f2;
e1.empregados[2] = f3;*/
}
}
public class Empresa
{
public int idEmpresa;
public int razaoSocial;
public String cnpj;
public Funcionario empregados[];
public int getIdEmpresa() {
return idEmpresa;
}
public void setIdEmpresa(int idEmpresa) {
this.idEmpresa = idEmpresa;
}
public int getRazaoSocial() {
return razaoSocial;
}
public void setRazaoSocial(int razaoSocial) {
this.razaoSocial = razaoSocial;
}
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
public Funcionario[] getEmpregados() {
return empregados;
}
public void setEmpregados(Funcionario[] empregados) {
this.empregados = empregados;
}
public void adicionaEmpregado(Funcionario f)
{
int i = 0;
if(this.empregados[i] != null)
{
this.empregados[i] = f;
i++;
}
else
{
System.out.println("Não dá para adicionar mais funcionários");
}
/*for(int i = 0; i < empregados.length; i++)
{
this.empregados[i] = f;
} */
}
public void mostrarEmpregados()
{
for(int i = 0; i < empregados.length; i++)
{
System.out.println("Valor: " + i + " é o empregado: " + this.empregados[i]);
}
}
boolean contemFuncionario(Funcionario f)
{
boolean func = false;
for(int i = 0; i < empregados.length; i++)
{
if(this.empregados[i] == f)
{
System.out.println("Empregado existente!");
func = true;
}
else
{
System.out.println("Não encontrado!");
func = false;
}
}
return func;
}