Java用于解析点分标识符的规则是什么?
例如:
import Foo.Bar;
class Foo
{
public static class Bar
{
};
};
Run Code Online (Sandbox Code Playgroud)
现在,Foo.Bar可以引用导入的类Bar或源代码中定义的类.这种模糊性是如何解决的?
我试过这个案例,所以我知道在实践中会发生什么,但我正在寻找更多; 我想知道基本规则.例如,如果Foo.Bar源文件中存在,我仍然可以引用导入的类Foo.Bar.Baz吗?如果Foo.Bar是一个包还是一个类怎么办?如果编译器找不到Foo.Bar最近的Foo,它只是放弃,还是继续寻找其他的Foos,直到它用完或找到匹配的?
(顺便说一下,我在语言规范中找到了相关的一点.它没有多大帮助......)
为了解决这样的奇怪冲突,java 编译器遵循与解决局部变量名称与实例字段名称冲突等问题相同的规则 - 它使用“最近的”声明。在这种情况下,本地类 Foo 将胜过导入类。
当导入两个同名的类时,也可能会发生冲突。最常见的例子是java.util.Date和java.sql.Date。如果您已将它们都导入到您的类中,则必须使用它们的完全限定名称来引用它们。
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |