【问题标题】: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 编译器中的一个错误”。

标签: java modifier


【解决方案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 编译
猜你喜欢
  • 2018-08-15
  • 2023-03-31
  • 2012-05-14
  • 1970-01-01
  • 2021-11-21
  • 2014-10-02
  • 2011-11-08
  • 2011-09-14
  • 2012-01-28
相关资源
最近更新 更多