[quote=jhooon]Olá. Eu não consigo compilar meu projeto pois o netbeans fica acusando o seguinte erro:
“non-static variable this cannot be referenced from a static context”
Segue o código aonde aponta o erro
final FechoEpslon f = m.get(e);
final FechoEpslon ftemp = new FechoEpslon(); // ERRO AQUI!!!
private class FechoEpslon extends EstadoComposto {
private final long serialVersionUID = -2977175480953755946L;
}
O que eu posso fazer para solucionar esse problema?
Grato![/quote]
Realmente jhooon, você está tentando usar uma classe que está como private, ninguém tem acesso a essa classe.
E outra na hora de instanciar você utiliza final ?
Não entendi o porque do final.
Com a classe marcada com private, você jamais conseguirá utilizar o construtor dessa classe como está tentando fazer:
final FechoEpslon ftemp = new FechoEpslon();
Mas o erro “non-static variable this cannot be referenced from a static context” não é por isso, provavelmente em algum local do seu código, você está tentando acessar uma variável não estática através de um método estático e isso não é possível. Métodos estáticos só acessam variáveis estáticas.
[quote=RodrigoM91]Realmente jhooon, você está tentando usar uma classe que está como private, ninguém tem acesso a essa classe.
E outra na hora de instanciar você utiliza final ?
Não entendi o porque do final.[/quote]
Se a classe privada for inner class, a classe que a possui tem acesso a ela.
[code]class Test {
private class InnerTest { //Pode ser vista por Test
public String toString() {
return “I am a private inner class”;
}
}
public void testMe1() {
InnerTest test = new InnerTest(); //Veja!!!
}
}[/code]
O erro indica que você está tentando usar algo no contexto errado. Ou seja, algo que deve estar em contexto de objeto dentro de um bloco de contexto de classe (estático):
Mudando um pouco a classe acima:
[code]class Test {
private class InnerTest {
public String toString() {
return “I am a private inner class”;
}
}
public static void testeMe2() {
InnerTest test = new Test.InnerTest(); //Erro aqui.
}
public void testMe1() {
InnerTest test = new InnerTest();
}
}[/code]
Neste caso a solução é colocar static na classe:
class Test {
private static class InnerTest {
....