2013-03-16 34 views
5

Se ho struttura di classe come quellacampi statici in classi interne

public class Foo{ 
    //declaring fields and methods 


    Foo(int k){ 
     Bar.a = k; 
    } 
    public class Bar{ 
     public final static int a; 
    } 
} 

E se creo molti casi di Foo, come si fa campo statico in atti di classe Bar? Voglio dire, è la stessa istanza per tutti gli oggetti Foo o per ogni istanza c'è un campo statico diverso?

+1

No, tutte le istanze condividono lo stesso campo statico, non ci sarà campo statico per ogni istanza. –

+0

capito. Grazie. – user2176737

+7

Il tuo codice non verrà compilato. Le classi nidificate non statiche non possono contenere campi statici. – Pshemo

risposta

4

Penso che la classe Inner non possa avere membri static in quanto richiede un'istanza di Outer Class.

0

La tua domanda non è corretta. Solo non ha senso chiedere qualcosa che non esiste. L'unica possibilità in questa situazione è di rendere la classe interna static. Quindi per ogni istanza della classe esterna hai una istanza statica di classe interna. E come risultato una variabile statica di questa classe interiore.

1

Il codice non verrà compilato, il compilatore emetterà

COMPILATION ERROR : 
------------------------------------------------------------- 
... error: Illegal static declaration in inner class blah.Foo.Bar 
1 error 

È necessario disporre di una classe interna static in modo che questo codice per la compilazione.