Por que não posso colocoar um membro static em uma classe interna comum?
class ClasseStatic1 {
public static class Aninhada1 {
static String str = "Eu sou uma variavel static";
public void metodoAninhado1() {
System.out.println("Metodo da classe ainhada 1.");
metodoStatic();
System.out.println("String estatica: " + str);
System.out.println("String estatica: " + ClasseInterna1.strClasseInterna); // Tentei de varias formas chamar esse membro mas não consegui
}
}
public class ClasseInterna1 { //Como a classe interna não esta em um metodo não precisamos instanciala dentro da propria classe para usar o metodo.
static String strClasseInterna = "Eu sou uma variavel static de classe interna";
public void metodoInterno1() {
System.out.println("Metodo da classe interna 1");
}
}
public static void metodoStatic() {
System.out.println("Eu sou um metodo static");
}
public void metodo() {
class classeInternaMetodo1 { //Lembre-se tambem dos modificadores de acesso pra metodos, apenas FINAL para variaveis e ABSTRACT para classes
//são permitidos
public void metodoClasseInternaMetodo() {
System.out.println("Metodo da classe interna de metodo 1");
}
}
classeInternaMetodo1 cim1 = new classeInternaMetodo1();
cim1.metodoClasseInternaMetodo(); //Lembre-se: para utilizarmos metodos de dentro de uma classe interna de metodo precisamos de instancia-las, pois
//se tratando de um método a classe so será criada quando o metodo for chamado para a pilha, e nada de adianta se
//não tivermos uma instancia dessa classe para poder usar seu metodo, ou ela seria uma classe interna inútil.
}
}
As vezes eu posso estar esquecendo de uma regra básica para membros static, mas não me recordo.