关于java.lang.Class 类的Class对象

liy_j 2011-12-16 03:09:03
一种说法:
Class对象是java.lang.Class<T>这个类生成的对象,Class 类的实例表示正在运行的 Java 应用程序中的类和接口。Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。这是JAVA API上这么说的,也就是说Class对象是在加载时才产生的。

另一种说法是:
每个类都有一个class对象。换言之,每当编写并且编译了一个新类,就会产生一个class对象(被保存在一个同名的.class文件中)。在运行时,当我们想生成这个类的对象时,运行这个程序的Java虚拟机首先检查这个类的class对象是否已经加载。如果尚未加载,JVM就会根据类名查找.class文件,并将其载入,一旦某个类的class对象被载入内存,它就被用来创建这个类的所有对象。这种说法中的Class对象是在编译后产生的并且保存在.class文件中。

小弟想知道,这两个Class对象是否是同一个对象?并且Class对象是在哪个阶段产生的?加载时还是编译后??
...全文
226 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liy_j 2011-12-16
  • 打赏
  • 举报
回复
最后个问题,确认下哈问完后就结贴:

你说的也就是:第二种class对象代表的是.class文件,对吧?
y_0715 2011-12-16
  • 打赏
  • 举报
回复
第一种是Clsaa类 第二种是.Class为结尾的文件。也就是说项目中不管是.java和.jsp 通过编译都会生出.Class文件。
你的问题也就是 俩个不是同一个Class 他是在编译结束后产生的。
liy_j 2011-12-16
  • 打赏
  • 举报
回复
自己先顶个,第二种说法是在JAVA编程思想上看到得

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧