社区
Java SE
帖子详情
关于 类.class 与对象.getClass() 以及 Class.forName("类名");
adrain_sengtang
2008-12-26 02:45:08
请问 :
有一个类A
Class cl=A.class;
jvm究竟在内存中做了什么 ?
而 对象.getClass() 以及 Class.forName("类名"); jvm 又做了什么 ?
...全文
268
5
打赏
收藏
关于 类.class 与对象.getClass() 以及 Class.forName("类名");
请问 : 有一个类A Class cl=A.class; jvm究竟在内存中做了什么 ? 而 对象.getClass() 以及 Class.forName("类名"); jvm 又做了什么 ?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jhr924
2008-12-26
打赏
举报
回复
[Quote=引用 4 楼 jiangnaisong 的回复:]
引用楼主 adrain_sengtang 的帖子:
请问 :
有一个类A
Class cl=A.class;
jvm究竟在内存中做了什么 ?
而 对象.getClass() 以及 Class.forName("类名"); jvm 又做了什么 ?
答:
1)Class cl=A.class; JVM将使用类A的类装载器,将类A装入内存(前提是:类A还没有装入内存),不对类A做类的初始化工作.返回类A的Class的对象
2)Class cl=对象引用o.getClass();返回引用o运行时真正所指的对象(因为:儿子对象的引用可能…
[/Quote]
高手
云上飞翔
2008-12-26
打赏
举报
回复
[Quote=引用楼主 adrain_sengtang 的帖子:]
请问 :
有一个类A
Class cl=A.class;
jvm究竟在内存中做了什么 ?
而 对象.getClass() 以及 Class.forName("类名"); jvm 又做了什么 ?
[/Quote]
答:
1)Class cl=A.class; JVM将使用类A的类装载器,将类A装入内存(
前提是:类A还没有装入内存
),
不
对类A
做类的初始化工作
.返回类A的Class的对象
2)Class cl=对象引用o.getClass();返回引用o
运行时真正所指的对象
(因为:儿子对象的引用可能会赋给父对象的引用变量中)所属的类的Class的对象
3)Class.forName("类名"); JAVA人都知道.
装入类A
,并
做类的初始化
.
gongfuliang
2008-12-26
打赏
举报
回复
getClass是获取对象的Class对象,
Class.forname是要求JVM查找并加载指定的类,JVM会执行该类的类域和静态代码段
二者还是有区别的哦
helei123a
2008-12-26
打赏
举报
回复
学习
树成
2008-12-26
打赏
举报
回复
前面两个放法就是获得一个Class类对象而已,没做什么;
Class.forName通过用户当前类加载器根据提供的类名加载类到虚拟机中,然后返回这个类的Class对象。
java中
Class
对象
详解和
类
名
.
class
,
class
.forName(), get
Class
()区别
Class
对象
的生成方式如下: 1.
类
名
.
class
说明: JVM将使用
类
装载器, 将
类
装入内存(前提是:
类
还没有装入内存),不做
类
的初始化工作.返回
Class
的
对象
2.
Class
.forName("
类
名
字符串") (注:
类
名
字符串是包名+
类
名
) 说明:装入
类
,并做
类
的静态初始化,返回
Class
的
对象
3.实例
对象
.get
Class
() 说明:
类
名
.
class
,
class
.forName(), get
Class
()区别
1、
类
名
.
class
说明:JVM将使用
类
装载器,将
类
装入内存(前提是:
类
还没有装入内存),不对
类
做
类
的初始化工作。返回
类
的
Class
的
对象
。 2、
Class
.forName("
类
名
字符串")(注:
类
名
字符串是包名+
类
名
) 说明:装入
类
,并做
类
的静态初始化,返回
Class
的
对象
。 3、实例
对象
o.get
Class
() 说明:对
类
进行静态初始化、非静态初始化;返回引用o运行时真正所指的
对象
【Java】
类
名
.
class
,
class
.forName(), get
Class
()区别
Class
对象
的生成方式如下: 1.
类
名
.
class
说明: JVM将使用
类
装载器, 将
类
装入内存(前提是:
类
还没有装入内存),不做
类
的初始化工作.返回
Class
的
对象
2.
Class
.forName("
类
名
字符串") (注:
类
名
字符串是包名+
类
名
) 说明:装入
类
,并做
类
的静态初始化,返回
Class
的
对象
3.实例
对象
.get
Class
() 说明:对
类
进
类
名
.
class
,
class
.forName(), get
Class
()区别及
Class
.getResource和
Class
Loader.getResource获取路径
Class
对象
生成方法: 1.
类
名
.
class
说明: JVM将使用
类
装载器, 将
类
装入内存(前提是:
类
还没有装入内存),不做
类
的初始化工作.返回
Class
的
对象
2.
Class
.forName("
类
名
字符串") (注:
类
名
字符串是包名+
类
名
) 说明:装入
类
,并做
类
的静态初始化,返回
Class
的
对象
3.实例
对象
.get
Class
() 说明:对
类
进行
Java中的“
类
名
”.
class
、
Class
.forName()、“引用名”.get
Class
()
(1)
类
名
.
class
:
class
是Java中每个
类
都有的一个静态属性
class
,
类
名
.
class
是使 JVM 将使用
类
装载器将
类
装入内存(前提是
类
还没有装入内存),不做
类
的初始化工作,返回
Class
对象
。 (2)
Class
.forName(): forName()方法是
Class
类
中的静态方法,
Class
.forName()会装入
类
并做
类
的初始化,返回
Class
对象
。 (3)引用名.get
Class
(): get
Class
()方法是Objdect
类
中的final native方法,引用名.getCl
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章