日期:2014-05-20  浏览次数:20852 次

Java的Class类是类的类吗?
本帖最后由 shimachao 于 2014-03-12 15:13:36 编辑
不能理解Class类是什么。

好像每一个基本数据类型和引用类型,包括自己定义的类,都会有一个对象的Class类对象。这个对象负责管理关于这个类的元信息?  
创建一个类的实例的时候是它的Class类对象帮忙创建的?

每个类的Class类对象在类被第一次加载时被虚拟机创建?

Class类的信息记录在.class文件中吗?


那么Class类对象时管理者?
------解决方案--------------------
看你的标题有点累,呵呵

下面这句话是java api文档里描述Class类的。可能对你的理解有帮助。括号里是我加的
(Class class is)Instances of the class Class represent classes and interfaces in a running Java application.

也就是说是“在java运行期间用来描述某个对象的“类或接口”的对象”
一般aObject.getClass()都能取到这个对象的类或者接口

可以用来在运行期进行一些"对于这个对象的,类一级别"的操作,
比如找到这个对象(所属于的类)的某个方法,然后调用,
等等等等。

大概可以理解为运行期的一个对象外面的一层包装,
这层包装写明了这个对象所属的类或者实现的接口。
别人(别的程序)可以根据这些包装信息,
在运行时“干预”这个对象的行为

一般在使用反射机制的时候用的比较多。

说的不一定对,就是抢个前排

good luck
------解决方案--------------------
不是类的类,而是类型的类。
相当于.NET里的 Type
------解决方案--------------------
每个类对应一个Class,他是类的相关信息,因为程序运行时可能会用到
------解决方案--------------------
创建一个类的实例的时候是它的Class类对象帮忙创建的?
:不是,但是会去Class里边获取类相关信息
每个类的Class类对象在类被第一次加载时被虚拟机创建?
:类在第一次被加载的时候,JVM会创建一个Class实例
Class类的信息记录在.class文件中吗?
:所有类信息都记录在class里边,因为class就是编译好的字节码存储格式
那么Class类对象时管理者?
:他就是一个普通对象,只不过存储的是类的相关信息,当然由JVM创建,自然由JVM管理,顺便说下类的加载步骤,楼主自己再深入看下或许有帮助(加载--验证--准备--解析--初始化--使用--卸载)
------解决方案--------------------
四楼说的对  他是  类型,是Type接口的子类
------解决方案--------------------
楼主以前是学C的?
------解决方案--------------------
打个比方吧,“人”是一个类,“鸟”是一个类,“学生”是“人”的一个实例,即对象,“喜鹊”是“鸟”的一个实例,即对象,这个应该很好理解吧。学习java的都知道,一切皆对象,那么上面说的“人类”是不是java中的“类”的一个对象,java的“类”也是一个东西啊,所以也要抽象成一个类,那么用什么表示,java用的就是Class表示。不知道楼主能理解吗?
------解决方案--------------------
Class是一个普通的类,和class文件有密切关联。可以了解一下classloader机制。