JVM 在加载特定类时是否会加载所有使用过的类?
当 JVM 加载类 A 时,它是否加载 A 中使用的所有类?
我想知道导入声明是否对加载过程有影响?
与 JLS 的链接将不胜感激。
When JVM loads a class A, does it load all of the classes used within A?
And I'm wondering if import declarations are matter somehow to the loading process?
The link to JLS would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
导入和类加载是不相关的。前者只是节省了输入:它允许您在代码中使用短类名而不是完全解析的类名。
类在第一次使用时由 JVM 加载时间。
Import and class loading are unrelated. The former just saves typing: it allows you to use the short class name rather than the fully-resolved class name in your code.
Classes are loaded by the JVM when they're used for the first time.
import
只是帮助程序员。编译类文件时,变量的限定名称存储在 .class 文件中,以便 JVM 知道它需要加载什么。http://java.sun.com/docs /books/jvms/second_edition/html/Concepts.doc.html#21410
第2.17.1节“虚拟机启动”
import
merely helps the programmer. When the class file is compiled the Qualified Name of the variables is stored in the .class file so the JVM knows what it needs to load.http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#21410
section 2.17.1 "Virtual Machine Start-up"
导入类是用户和编译器的标记。使用 import 不会加载类。 JVM 仅在引用类时才加载类,如果不需要这些类,则该类不会在编译时或运行时加载它。
Importing a class is marker for the user and the compiler. Using import does not load classes. JVM loads class only when it referenced and if the classes are not required then the class does not load it on compile time or runtime.