黑马程序员技术交流社区

标题: 获取class字节码文件的意思? [打印本页]

作者: rehan    时间: 2015-2-13 10:19
标题: 获取class字节码文件的意思?
学到反射了,不知道讲的是啥意思,很晕。。。获取的类是很多的,我就搞不明白,获取的究竟是class整个文件,还是class里面的某一个对象的类?如果是整个class文件的话,我要拿其中一个构造方法要怎么拿?
作者: franksight    时间: 2015-2-13 10:25
我也是有问题。。。
作者: 书生灬流年    时间: 2015-2-13 10:41
同感,有疑惑!
作者: wtjohn    时间: 2015-2-13 10:53
类本身也被描述成了一种类(因为不同的类仍有许多共性)或者说对象    Class clazz = Class.forName(xxx);  结果就是获得描述xxx类的名为clazz的对象,即clazz就是xxx类。
作者: wtjohn    时间: 2015-2-13 10:55
就是通过反射获得了某个类
作者: xiao飞    时间: 2015-2-13 11:08
获取整个所有CLASS 文件,你如果需要拿CLASS文件中的每一个构造函数,或者方法,或者变量都需要通过CLASS类中的方法获取的,  你主要了解CLASS这个类就好懂了,个人理解
作者: xyf19881010    时间: 2015-2-13 16:39
.class这个文件其实也是一个对象,叫做Class类型对象,这个Class类型就类似于Person类型的地位。因为我们在真正开发的时候有时间要用到别人的类型,但是别人没有提供的这个类的.java源代码,只有这个类对应的.class文件,并且没有说明文档。所以我们就不知道这个源代码里面到底有什么方法,字段,构造函数等等,但是同时我们又要用这个类,所以此时就只能通过反射来得到这个.class文件对应类型的这些方法,字段,构造函数进而调用实现我们所需功能。我们在编程的时候,jdk其实提供给我们的也是.class文件。但是同时给我们了说明文档(API文档),所以我们虽然没有源代码,但是知道内部的细节,所以直接编程时使用各种方法,字段,构造函数等。也就是说只要别人的.class文件附上了说明文档,其实反射就没有必要使用了,看文档就知道内部细节进行使用了。这是我的看法。
作者: 赵耿    时间: 2015-2-13 17:21
支持xyf19881010
作者: rehan    时间: 2015-2-13 18:17
xyf19881010 发表于 2015-2-13 16:39
.class这个文件其实也是一个对象,叫做Class类型对象,这个Class类型就类似于Person类型的地位。因为我们在 ...

你的理解能力真的挺好的,这么一说好像有点感觉了。。。。
作者: kfcka    时间: 2015-2-13 20:57
每一个数据类型对应一个字节码,要创建某个类型的对象就是复制各自的字节码来创建。
首先,获取字节码,然后,通过字节码.getField(“变量名”)和字节码.getConstructor()或者
getMethod("方法名",返回类型)来得到相应的Field变量,Constructor方法或者Method方法
再执行相应的操作




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2