“私人包裹”是什么意思?

请看样品:

private package com.xm.aws; import static com.xml.aws.PcgTest.test; public class PackageTest { public static void main(String[] args) { test(args); } } 

private告诉我有关包裹的内容是什么?

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

Java语言规范明确指出:

6.6.1。 确定可访问性

  • 始终可以访问包。

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

java语言规范的另一部分:

7.4.1。 命名包

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

PackageDeclaration:

注释opt package PackageName;

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

根据JLS 18的另一个引用。语法 package唯一允许的是Annotation

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

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

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

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

如果在包名称之前添加private,则这将是编译器错误

尽管package不是使用private关键字实现的最高级别的Java封装,但它仍然是第二个最佳选择,必须封装整个function而不仅仅是一个类。

简而言之, Access修饰符不是包声明的一部分

请参阅此链接

在我看来它只是发生在日食中。 当我通过命令提示符通过javac命令编译代码时,我得到这个编译时错误:

错误:期望的类,接口或枚举

看看这里的post,看起来像eclipse使用自己的jdk:

如果我有eclipse,是否需要安装java sdk

写“私人包”和“包”是一样的。 它们识别相同的访问级别(dafault)。

private修饰符指定只能在自己的包中访问该成员(与protected一样)。