Bem galera surgiu essa pergunta de um estudante: Por que uma classe não pode ser declarada como static ? De imediato pensei que era algo lógico que não faz sentido, mas, pensando mesmo numa resposta coerente e não soube formular. Alguém se habilita ?
Esses dias eu precisei usar uma classe estática, mas a usei como sendo inner class. No post acima também diz que só serve para classes estáticas, dá uma olhada lá!
Obviamente citar a especificação, sem explicar, é realmente coisa de advogado.
“static”, em Java, normalmente indica que a variável ou a classe modificada é referente à classe em que ela foi declarada, não a uma determinada instância. O modificador “static” não pode ser usado “externamente” (embora isso possa ser feito em C/C++).
class Y {
private static int x;
}
x é uma variável “de classe” da classe Y.
class Z {
static class W {
}
}
Z.W é uma classe interna à classe Z. Ela não recebe uma referência para uma instância da classe Z (ou seja, não há como obter “Z.this”).
static class P {
}
Isso é inválido em Java porque não há uma classe que esteja associada a P.