gpt4 book ai didi

点分标识符的Java解析

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:23:04 24 4
gpt4 key购买 nike

Java 用来解析点分标识符的规则是什么?

例如:

import Foo.Bar;

class Foo
{
public static class Bar
{
};
};

现在,Foo.Bar 可以引用导入的类 Bar 或源代码中定义的类。这种歧义是如何解决的?

我已经尝试过这个案例,所以我知道在实践中会发生什么,但我正在寻找更多;我想知道基本规则。例如,如果源文件中存在Foo.Bar,我是否仍然可以引用导入的类Foo.Bar.Baz?如果 Foo.Bar 是一个包同时也是一个类呢?如果编译器在最近的 Foo 中找不到 Foo.Bar,它是直接放弃,还是继续寻找其他 Foo直到它用完或找到一个匹配的?

(顺便说一句,我在语言规范中找到了相关位。它没有太大帮助......)

最佳答案

为了解决像这样的奇怪冲突,Java 编译器遵循它用来解决局部变量名称与实例字段名称冲突等问题的相同规则 - 它使用“最近”声明。在这种情况下,本地类 Foo 将胜过导入类。

当导入两个同名类时也会发生冲突。最常见的示例是 java.util.Datejava.sql.Date。如果您已将它们都导入到您的类中,则必须使用它们的完全限定名称来引用它们。

关于点分标识符的Java解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6331752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com