Por que uma classe não pode ser declarada STATIC?

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 ?

Não me refiro innerclass…

valeu!

Olá.
Parece que tem um post aqui no GUJ que fala sobre o mesmo assunto, não sei se você já chegou a dar uma olhada:

http://www.guj.com.br/posts/list/12916.java

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á!

Valeu

Resposta de advogado: “porque a JLS ( http://java.sun.com/docs/books/jls/third_edition/html/classes.html ) assim o especifica”

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.

enfim, static é para membros.