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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 帅哥哥 高级黑马   /  2014-5-20 17:33  /  2496 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 帅哥哥 于 2014-5-21 11:14 编辑

Class类具体的该怎么理解呢?Class类的对象是什么,是字节码文件本身吗,如果是的话,字节码文件中内容又成什么了

比如 new A();   生成一个 A.class 文件,那 A.class 文件中的内容不是类 A 中的内容吗,跟Class类有什么关系。。。
各种乱,在线等大神解惑!!!

16 个回复

倒序浏览
Class类,就是所有类的类,不管你是a.class ,b.class,c.lass.....他们都是Class类的一个实例对象,也就是说我们每写的一个类就是Class类的一个实例我个人是这理解的,不知道是不是有问题。
回复 使用道具 举报
多一点 发表于 2014-5-20 18:28
Class类,就是所有类的类,不管你是a.class ,b.class,c.lass.....他们都是Class类的一个实例对象,也就是说 ...

所有类的类是什么意思,还是不太明白。。。(我好笨。。。)
public final class Class<T>extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement
也就是说这个类是不能被继承的,
它本身继承自Object,说明它就是个一般的类,
类是一类事物抽象出来的,
你说它是所有类的类,是说它是所有类抽象出来的一个类,然后具有所有类的共同特征吗?
回复 使用道具 举报
帅哥哥 发表于 2014-5-20 19:14
所有类的类是什么意思,还是不太明白。。。(我好笨。。。)
public final class Classextends Object im ...

没一个类都有一个类加载器,都有一定的属性,一定的方法,一定的构造方法,这是类的公有属性,那么如何描述这些类的公有属性呢,就是Class类,Class类描述了类的属性,可以通过Class类获得类的属性、方法和构造器。打个比方,每个职业都有一定的工作内容,但是做为职业,它们都有共同的一些属性比如上下班时间、工资、工作内容等,那么这时候就有一个专门的职业来描述职业到底是什么,这个职业也是职业的一种,只不过做的事是描述职业,有点儿像HR。Class类就是类中的HR,负责描述其他类有什么属性、有什么方法及构造器,并提供了一系列的方法对这些属性、方法、构造器进行操作。

通过Class类操作类的属性、方法、构造器,就是java中的反射。
回复 使用道具 举报
Java程序中的各个Java类属于同一类事物,描述这类事物的Java类就是Class类。
对比提问:众多的人用一个什么类表示?众多的Java类用一个什么类表示?
人 Person
Java Class
对比提问: Person类代表人,它的实例对象就是张三,李四这样一个个具体的人,Class类代表Java类,它的各个实例对象又分别对应什么呢?
对应各个类在内存中的字节码,例如,Person类的字节码,ArrayList类的字节码,等等;
一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,不同的类的字节码是不同的,所以它们在内存中的内容是不同的;





回复 使用道具 举报
如何得到各个字节码对应的实例对象?
每个类被加载后,系统会为该类生成对应的Class对象,通过Class对象可以访问到JVM中的这个类,
3种方式:
1、调用某个类的class属性获取Class对象,如Date.class会返回Date类对应的Class对象(其实就是得到一个类的一份字节码文件);
2、使用Class类的forName(String className)静态方法,className表示全限定名;如String的全限定名:java.lang.String;
3、调用某个对象的getClass()方法。该方法属于Object类;
Class<?> clz = new Date().getClass();
回复 使用道具 举报
理解下一个类只有一个入口  一个类中可以有多个class class可以是方法
回复 使用道具 举报
帅哥哥 发表于 2014-5-20 19:14
所有类的类是什么意思,还是不太明白。。。(我好笨。。。)
public final class Classextends Object im ...

你这样理解就可以啦,不要太纠结
回复 使用道具 举报
liang090214 发表于 2014-5-20 21:56
理解下一个类只有一个入口  一个类中可以有多个class class可以是方法

.........................................................................................
回复 使用道具 举报
黑马-王宁 发表于 2014-5-20 19:48
如何得到各个字节码对应的实例对象?
每个类被加载后,系统会为该类生成对应的Class对象,通过Class对象可 ...

也就是说,
① Class类的对象是JVM生成的
② 这个对象中有对应的那个类的各种信息,也可以操作对应那个类中的内容
这么理解对吧
回复 使用道具 举报
屈_zi 发表于 2014-5-20 19:37
没一个类都有一个类加载器,都有一定的属性,一定的方法,一定的构造方法,这是类的公有属性,那么如何描 ...

给我启发很大,现在有点“懂了些但是说不出来”的感觉。。。
回复 使用道具 举报
lvc 中级黑马 2014-5-21 07:11:26
12#
class 类名。就像是一堆积木中的一个小的模块,里面包含有他特定的功能。
new 类名 。是开辟一块内存加载相应的类。就像更是跟装上的模块通电,让他动起来。
生成的  .class文件是经过java虚拟机编译过的文件,让机器能够识别(我这个说法不太准确,可以想成这样),就像是把中文翻译成英语。让外国人能明白。
回复 使用道具 举报
真的有必要想这么多么?
回复 使用道具 举报
帅哥哥 发表于 2014-5-20 23:42
也就是说,
① Class类的对象是JVM生成的
② 这个对象中有对应的那个类的各种信息,也可以操作对应那个类 ...

恩,对!
回复 使用道具 举报
lvc 发表于 2014-5-21 07:11
class 类名。就像是一堆积木中的一个小的模块,里面包含有他特定的功能。
new 类名 。是开辟一块内存加载相 ...

呵呵,我说的是名字叫做 Class 的这个类~~~
public final class Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement
回复 使用道具 举报
lvc 中级黑马 2014-5-21 18:54:14
16#
长见识了,你们想得这么细。佩服:)
回复 使用道具 举报
路过看看看看~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马