2012-05-02 22 views
5

Dado el siguiente programa:Java mundial espacio de nombres de acceso

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

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

Compilación esto me da un error que dice que "int no se puede eliminan las referencias". La razón es obvia, pero ¿cómo se deben manejar situaciones como esta? Es especialmente relevante en escenarios de generación de código, donde uno no puede saber qué código de usuario está entrelazado con el código generado.

En C# Me limitaría a utilizar el especificador de espacio de nombres "global ::" antes de "java.lang", pero ¿qué haces en Java?

+0

¡Eso es algo que nunca había pensado! – adarshr

Respuesta

3

Sin solución general en Java. La forma en que vivimos con esto es

  1. respetar las convenciones de nomenclatura, que distinguen los nombres de clases de nombres de paquetes/de campo y
  2. calificar var estático con su nombre de clase cuando se genera código.
+0

¿Cómo se supone que eso ayuda? Eyvind sigue las convenciones de nomenclatura normales en su ejemplo y no importa si el campo es estático o no, aún tiene prioridad sobre el acceso al paquete de Java. – jarnbjo

+0

Como dije, "No hay una solución general en Java" :) –

+0

Correcto, eso era lo que temía. Pragmatismo, ¡aquí vengo! – Eyvind

Cuestiones relacionadas