"私人包裹"是什么意思?

Sst*_*stx 27 java package

请看样品:

private package com.xm.aws;

import static com.xml.aws.PcgTest.test;

public class PackageTest {
    public static void main(String[] args) {
        test(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

什么是private告诉我的包?

And*_*s_D 24

我们不要将它与可以添加到类,方法和字段中的package-private或其他访问修饰符混淆.

Java语言规范中明确规定:

6.6.1.确定可访问性

  • 始终可以访问包.

看一下,我想到的唯一答案是,(某些)编译器不会将此视为编译时错误,而是完全没有意义.不可能以这种方式限制对类或包的可访问性(并且每个包都始终可访问).

java语言规范的另一部分:

7.4.1.命名包

编译单元中的包声明指定编译单元所属的包的名称(第6.2节).

PackageDeclaration:

注释opt package PackageName;

因此关键字可以在注释之前.但访问修饰符不是包声明的一部分.即使我们扩展"注释",我们也不会在这里找到访问修饰符.

另一个参考,根据JLS 18.语法唯一允许先于的packageAnnotation.

CompilationUnit:
[[Annotations]包QualifiedIdentifier;]
{ImportDeclaration} {TypeDeclaration}

  • http://stackoverflow.com/questions/2099431/whats-the-point-of-package-annotations (3认同)
  • @GyroGearless最后这是eclipse中的一个bug.访问修饰符不是包声明的一部分,因此它们在源文件的开头有点"隔离".他们不会在这里修改任何东西.日食需要修复. (2认同)

Raj*_*ani 6

您提供的代码示例在java中无效.的private访问修饰符可应用于成员和方法,包括内部类.您的代码在Eclipse中编译,但被Oracle自己的编译器拒绝.

事实上,Eclipse为这个java代码生成的字节代码与或不使用该关键字完全相同private.这表明这可能是一个Eclipse错误,它忽略了package编译期间单词之前的文本.

您可能阅读或听到的是"package-private"这一短语,这意味着包之外的任何内容都无法访问该类或成员.您可以通过不在类本身上使用任何访问修饰符来完成此操作.不是private在包上使用关键字.