首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClassLoader,类差异

ClassLoader,类差异
EN

Stack Overflow用户
提问于 2013-11-09 04:53:41
回答 2查看 56关注 0票数 0

我读过很多关于类加载器和类的论坛,这可能是我犯的错误。我现在很困惑。

  1. ClassLoader什么时候被实例化?
  2. 请阅读“当将java源文件编译为二进制类时,编译器将字段插入到java类文件中,这是一个名为‘class’的public static final字段,类型为java.lang.Class”。这是真的吗?那么,为什么我们可以直接在代码中访问.class而不编译呢?

还有其他有效的信息可以帮助更好地理解这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2013-11-09 05:40:30

  1. ClassLoader是类的容器。因此,当您需要加载类时手动创建它,或者JVM在启动时自动创建它来加载应用程序。有一个类加载器的层次结构,所以它更复杂一些,你引用的那篇文章很好地介绍了这个主题。
  2. 恐怕不行。我认为作者的意思是,它可以被看作是一个被注入到类中的静态字段--这确实是有意义的。我刚解压缩了一个课程:
代码语言:javascript
复制
public class Role {
    public String role;
}

它在字节或这里都没有该字段的跟踪:

代码语言:javascript
复制
public class bear.core.Role {
  public java.lang.String role;

  public bear.core.Role();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return
}

对于你的最后一个问题,现代IDE只需知道有这个.class字段。

票数 1
EN

Stack Overflow用户

发布于 2013-11-09 05:41:06

代码语言:javascript
复制
When does ClassLoader get instantiated?

类加载器在链接前编译后由JVM加载类文件时被实例化!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19872482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档