2012-05-02 14 views
5

Dato il seguente programma:Java globale namespace accesso

class A { 
    static int java = 42; 
    static int System = -1; 

    public static void main(String[] args) { 
     java.lang.System.out.println("Foo"); 
    } 
} 

Compilazione questo mi dà un errore dicendo che "int non può essere dereferenziato". La ragione è ovvia, ma come si dovrebbe gestire situazioni come questa. È particolarmente rilevante negli scenari di generazione del codice, in cui non si può sapere quale codice utente è intrecciato con il codice generato.

In C# vorrei solo utilizzare lo specificatore dello spazio dei nomi "global ::" prima di "java.lang", ma cosa si fa in Java?

+0

Questo è qualcosa a cui non avevo mai pensato! – adarshr

risposta

3

Nessuna soluzione generale in Java. Il nostro modo di vivere con questo obiettivo è quello

  1. rispetto convenzioni di denominazione, che distinguono i nomi delle classi da nomi di pacchetto/campo, e
  2. qualificarsi var statica con il suo nome di classe durante la generazione del codice.
+0

Come si suppone dovrebbe aiutare? Eyvind segue le normali convenzioni di denominazione nel suo esempio e non importa se il campo è statico o meno, ha ancora la precedenza sull'accesso al pacchetto java. – jarnbjo

+0

Come ho detto, "Nessuna soluzione generale in Java" :) –

+0

Giusto, questo era ciò di cui avevo paura. Pragmatismo, arrivo! – Eyvind

Problemi correlati