黑马程序员技术交流社区

标题: 关于类的加载的问题? [打印本页]

作者: 冯盼    时间: 2012-12-4 14:44
标题: 关于类的加载的问题?
本帖最后由 冯盼 于 2012-12-4 14:46 编辑

静态方法是随着类加载进入内存而加载的,而普通方法是在实例化一个对象时才加载的。可是反射时候,说类的二进制码文件都加载进了内存,从而可以调用它的所有方法。这个地方有点迷惑,这不就是说都是在加载.class文件时候方法加载进了内存么?
作者: vipzh    时间: 2012-12-4 15:25
http://www.blogjava.net/William/archive/2006/08/25/65804.html
作者: 罗会涛    时间: 2012-12-4 16:18
不对,反射只是得到方法的字节码包装类,你不能用这个字节码来真正的调用方法,要想让方法启动必须调用这个字节码方法对象的invoke方法,而public Object invoke(Object obj, Object... args),这个方法是必须要传递给他一个对象的.那么就是说你通过反射来调用一个方法,还是需要一个在这个方法上的对象,用来明确这个方法被谁调用了(static的方法不需要,因为不需要对象所以invoke方法的第一个参数可以为null)
反射得到的成员字节码包装类Field,想要真正获得里面的值也是需要对象的.
得到的字节码包装类可以获得方法和成员不需要对象就可以明确的信息,如方法或成员的名称,值类型,方法参数列表等
作者: 马清泽    时间: 2012-12-6 15:15
是运行的时候加载的,首先,命令行启动,那你自己得输入含有main方法的类路径,此时,加载main方法类,中间过程中用到哪个类就在默认的路径中查找加载。如果你是用jar形式打开的,那jar文件里面已经配好main方法类了,原理同上




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