A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 骆传雄 初级黑马   /  2012-11-16 16:54  /  1916 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

听张老师讲高新技术,在透彻分析反射的基础_Class类时,"得到各个字节码对应的实例对象(Class类型)"与"只要是在源程序中出现的类型,都有各自的Class实例对象”这两句我有点不太明白。望高手指教。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 鼓励一下 。

查看全部评分

6 个回复

倒序浏览
Class的理解:   在反射机制中,Class是一个很重要的类,该类的实例对象用来表示一个类型的特定信息。注意:这里讲的是类型的特定信息,不是类的特定信息哦。为什么这么讲,请看如下代码:int.class ; double[ ].class ;这两句都是正确的。
int.class是Class的一个实例对象,该对象中存有 int 的特定信息;同理,double[ ].class也是Class的一个实例对象,该对象中存有double数组的相关信息。大部分情况下,Class的实例对象表示的是一个类的特定信息,但是它的实际意义确不只于此。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Class对象包含了与类相关的信息。事实上,Class对象就是用来创建类的所有的“普通”对象的。

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

一旦某个类的Class对象被载入内存,它就被用来创建这个类的所有对象。

Class对象的生成方式如下:
1.Class.forName("类名字符串")
2.类名.class
3.实例对象.getClass()  
生成Class对象的过程其实是如此的:
当我们编写一个新的java类时,JVM就会帮我们编译成class对象,存放在同名的.class文件中。在运行时,当需要生成这个类的对象,JVM就会检查此类是否已经装载内存中。若是没有装载,则把.class文件装入到内存中。若是装载,则根据class文件生成实例对象。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。
在运行期间,如果我们要产生某个类的对象,Java虚拟机会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。
在运行期间,如果我们要产生某个类的对象,Java虚拟机会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象
回复 使用道具 举报
两句话其实是一个意思,源程序就是以字节码来保存的。
两句话的意思都是:源程序里写的类在运行时都会有实例对象。
回复 使用道具 举报
严学韦 发表于 2012-11-16 23:05
在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文 ...

明白了,谢谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马