对于此源代码......
... Eclipse报告以下错误:
只能导入一种类型。 pkg.a解析为包
......而太阳队javac
编译得很好。
如果我尝试完全符合pkg.a
这样的课程,那么类似的情况:
Eclipse报告......
pkg.a无法解析为类型
......而太阳队javac
编译得很好。
似乎Eclipse倾向于将标识符解释为类名的包,而javac则完全相反。那么,它是Eclipse或javac中的错误吗?
(对语言规范的引用显然是一个优点。)
答案 0 :(得分:3)
这绝对是一个Eclipse错误:
一个简单的名称可能出现在上下文中,它可能被解释为变量,类型或包的名称。在这些情况下,§6.5的规则指定将优先选择变量而不是类型,并且将优先选择类型而不是包。因此,有时可能无法通过其简单名称引用可见类型或包声明。我们说这样的声明是模糊不清的。
明确的含义是,类和包具有相同名称是合法的。否则,JLS会说一个隐藏包的类是非法的......而不是优先使用该类。
话虽如此,你遇到这种情况的唯一原因是你选择忽略Java关于命名的约定。不要期待太多的同情......
答案 1 :(得分:1)
这是一个样式约定,为类提供一个以大写字母开头的名称和一个包含小写字母的包;这将解决你的问题。