¿Cuáles son las reglas que usa Java para resolver los identificadores de puntos?Análisis de Java de identificadores de puntos
Por ejemplo:
import Foo.Bar;
class Foo
{
public static class Bar
{
};
};
Ahora, Foo.Bar
puede hacer referencia a la clase importada Bar
o el definido en el código fuente. ¿Cómo se resuelve este tipo de ambigüedad?
He intentado este caso por lo que sé lo que sucede en la práctica, pero estoy buscando más que eso; Quiero saber las reglas subyacentes. Por ejemplo, si existe Foo.Bar
en el archivo fuente, ¿aún puedo hacer referencia a la clase importada Foo.Bar.Baz
? ¿Qué pasa si Foo.Bar
es un paquete y también una clase? Si el compilador no puede encontrar Foo.Bar
en el Foo
más cercano, ¿se acaba de dar por vencido, o sigue buscando otras Foo
s hasta que se agote o encuentre una que coincida?
(Por cierto, he encontrado el bit relevante en la especificación del lenguaje. No ayuda mucho ...)
Si todo el código sigue las convenciones de nomenclatura de Java recomendadas, entonces esto nunca se presenta: los nombres de los paquetes siempre son minúsculas, y los nombres de las clases siempre comienzan con una letra mayúscula. Si su código no sigue esa convención, bueno, lo que ve en la especificación del lenguaje es lo que obtiene. –
Cierto, pero no es lo que estaba preguntando ... –
Correcto, y es por eso que mi comentario es un comentario, no una respuesta. ;-) –