Casa > P > Por Que Os Métodos De Classe Interna Não Podem Ser Estáticos Em Java?

Por que os métodos de classe interna não podem ser estáticos em Java?

Primeiro let's esclarece algo, as classes internas STATIC podem ter membros estáticos.

A razão pela qual as classes internas não podem ter membros estáticos é porque os membros estáticos são normalmente instanciados quando o programa inicia. Entretanto, uma classe interna depende de ter uma instância de sua classe envolvente para poder criá-la e depois acessá-la's membros. Portanto, a decisão de não ter membros estáticos para uma classe interna faz sentido devido a essa dependência. O membro estático não pode ser acessado até que algo tenha sido criado, ou seja, a instância da classe envolvente, então por que tê-la?

P>Eu também poderia ver isso fazendo sentido, porque se a JVM tem um local especial para membros estáticos, então ela ganhou'não faz muito sentido poluir esse espaço com membros estáticos da classe inner, que não estão disponíveis no namespace global até que uma instância de outra classe exista.

I will leave you with an example of how to access inner class members

  1. public class Outer { 
  2. public static class StaticInnerClass { 
  3. public static int member = 1337; 
  4.  
  5. public class InnerClass { 
  6. // public static int member = 1337; // Error 
  7. public int member = 1337; 
  8.  
  9. public static void main(String args[]) { 
  10. int innerMember = Outer.StaticInnerClass.member; // OK 
  11. // int innerClassMember = Outer.InnerClass.member // Error 
  12.  
  13. Outer outer = new Outer(); 
  14. InnerClass innerclass = outer.new InnerClass(); 
  15. int innerClassMember = innerclass.member; // OK 
  16.  

De Cloutman

Como resolver um erro de sintaxe de declaração em C++ :: Como é que a mint.com e sites semelhantes evitam armazenar palavras-passe em texto simples?