请看样品:
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.语法唯一允许先于的package是Annotation.
CompilationUnit:
[[Annotations]包QualifiedIdentifier;]
{ImportDeclaration} {TypeDeclaration}
您提供的代码示例在java中无效.的private访问修饰符可应用于成员和方法,包括内部类.您的代码在Eclipse中编译,但被Oracle自己的编译器拒绝.
事实上,Eclipse为这个java代码生成的字节代码与或不使用该关键字完全相同private.这表明这可能是一个Eclipse错误,它忽略了package编译期间单词之前的文本.
您可能阅读或听到的是"package-private"这一短语,这意味着包之外的任何内容都无法访问该类或成员.您可以通过不在类本身上使用任何访问修饰符来完成此操作.不是private在包上使用关键字.
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |