考虑以下代码,其中 HelloWorld 类具有默认或包私有访问权限:
Consider the following code, where the HelloWorld class has default or package-private access:
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
并假设上述代码保存在一个名为HelloWorld.java 的文件中.所以我的问题是:既然 HelloWorld 现在是一个包私有类,它是如何工作的?main() 方法不应该跨包可见或可访问,对吗?
And assume that the above code is saved in a file called HelloWorld.java. So my question is: since HelloWorld is now a package-private class, how does it work? The main() method should not be visible or accessible across packages, am I right?
如果将类 HelloWorld 声明为 public,这对我来说非常有意义.只有在使用默认包私有访问声明时才会混淆.
It makes perfect sense to me if the class HelloWorld is declared public. Confusion is only when it is declared with the default package-private access.
JVM启动在§12.1 JLS 的虚拟机启动.
请注意,本章没有提及关于类的可见性检查.它only 指定main method 必须是public.
Note that this chapter says nothing about visibility checks with regards to the class. It only specifies that the main method must be public.
这意味着根本没有检查类级别的可见性(哪种类型有意义,因为还没有上下文可以检查可见性:在哪个包"中是调用者"?).
This means that there simply is no check for visibility on the class level (which kind-of makes sense as there is no context yet against which to check the visibility: in which "package" is the "caller"?).
这篇关于.java 文件中的包私有类 - 为什么它可以访问?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
如何检测 32 位 int 上的整数溢出?How can I detect integer overflow on 32 bits int?(如何检测 32 位 int 上的整数溢出?)
return 语句之前的局部变量,这有关系吗?Local variables before return statements, does it matter?(return 语句之前的局部变量,这有关系吗?)
如何将整数转换为整数?How to convert Integer to int?(如何将整数转换为整数?)
如何在给定范围内创建一个随机打乱数字的 intHow do I create an int array with randomly shuffled numbers in a given range(如何在给定范围内创建一个随机打乱数字的 int 数组)
java的行为不一致==Inconsistent behavior on java#39;s ==(java的行为不一致==)
为什么 Java 能够将 0xff000000 存储为 int?Why is Java able to store 0xff000000 as an int?(为什么 Java 能够将 0xff000000 存储为 int?)