gpt4 book ai didi

java - 包和类之间的名称冲突。 Eclipse 或 javac 中的错误?

转载 作者:搜寻专家 更新时间:2023-10-31 20:14:54 29 4
gpt4 key购买 nike

对于这个源代码...

enter image description here

... Eclipse 报如下错误:

Only a type can be imported. pkg.a resolves to a package

... 而 Suns javac 可以很好地编译它。

类似的情况,如果我尝试像这样完全限定类 pkg.a:

enter image description here

eclipse 报告...

pkg.a cannot be resolved to a type

... 而 Suns javac 可以很好地编译它。


似乎 Eclipse 倾向于将标识符解释为包而不是类名,而 javac 恰恰相反。那么,是 Eclipse 中的错误还是 javac 中的错误?

(对语言规范的引用显然是一个优势。)

最佳答案

这绝对是一个 Eclipse 错误:

6.4.2. Obscuring

A simple name may occur in contexts where it may potentially be interpreted as the name of a variable, a type, or a package. In these situations, the rules of §6.5 specify that a variable will be chosen in preference to a type, and that a type will be chosen in preference to a package. Thus, it is may sometimes be impossible to refer to a visible type or package declaration via its simple name. We say that such a declaration is obscured.

明确的含义是类和包同名是合法的。否则,JLS 会说隐藏包的类是非法的……而不是优先使用该类。


话虽如此,您陷入这种情况的唯一原因是您选择了忽略 Java 的命名约定。不要期待太多的同情......

关于java - 包和类之间的名称冲突。 Eclipse 或 javac 中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9645376/

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