包修饰符有啥意义?
Posted
技术标签:
【中文标题】包修饰符有啥意义?【英文标题】:What's the point of package modifiers?包修饰符有什么意义? 【发布时间】:2014-09-03 12:25:35 【问题描述】:我不明白这样的包修饰符(不是注释):
public package foo;
public class Bar
它们有什么意义吗?
【问题讨论】:
Java 中没有包修饰符之类的东西。 但它是有效的 java 语法 包修饰符是什么意思? “但它是有效的 java 语法”不,不是,public package foo;
在 Java 中无效,不会编译。
@biziclop:如果它不应该编译,那么它不是完全有效的代码 - 它绝对不能在所有编译器下编译。 (例如,Oralce 的 javac 不支持。)
@JonSkeet 我应该对其进行限定:它被 Eclipse 识别为有效代码。这只是对一连串毫无根据的反对票的反应。这个问题是完全合理的,即使答案可能是“这是 Eclipse 编译器中的一个错误”。
【参考方案1】:
JLS 中的 only 类型的包修饰符是一个注解。来自JLS 7.4.1:
PackageDeclaration:
<em>PackageModifier</em>
package
标识符 .标识符;
PackageModifier:
注解
所以public package foo;
是无效的语法。
由于bug 在某些情况下已被修复,这在某些 Eclipse 版本下编译,并将在 Eclipse 4.4 及以后的所有情况下修复。
【讨论】:
在 eclipse 4.3 中它编译(没有显示错误,所以我猜是那个编译器中的一个错误 @Pablo :这是否与 Oracle JDK 一起编译? @Pablo Ecplipse 编译器和原来的 Java 编译器不一样。 @Pablo: 在 Kepler SR2 下它不能为我编译。 @Pshemo 我知道,这就是我说 eclipse 编译器的原因,我发现不止一段代码在 eclipse 中看起来是正确的,但它不能使用 javac 编译以上是关于包修饰符有啥意义?的主要内容,如果未能解决你的问题,请参考以下文章