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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯盼 中级黑马   /  2012-12-4 14:44  /  1789 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冯盼 于 2012-12-4 14:46 编辑

静态方法是随着类加载进入内存而加载的,而普通方法是在实例化一个对象时才加载的。可是反射时候,说类的二进制码文件都加载进了内存,从而可以调用它的所有方法。这个地方有点迷惑,这不就是说都是在加载.class文件时候方法加载进了内存么?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
http://www.blogjava.net/William/archive/2006/08/25/65804.html
回复 使用道具 举报
不对,反射只是得到方法的字节码包装类,你不能用这个字节码来真正的调用方法,要想让方法启动必须调用这个字节码方法对象的invoke方法,而public Object invoke(Object obj, Object... args),这个方法是必须要传递给他一个对象的.那么就是说你通过反射来调用一个方法,还是需要一个在这个方法上的对象,用来明确这个方法被谁调用了(static的方法不需要,因为不需要对象所以invoke方法的第一个参数可以为null)
反射得到的成员字节码包装类Field,想要真正获得里面的值也是需要对象的.
得到的字节码包装类可以获得方法和成员不需要对象就可以明确的信息,如方法或成员的名称,值类型,方法参数列表等

评分

参与人数 2技术分 +1 黑马币 +3 收起 理由
古银平 + 1 赞一个!
冯盼 + 3 很给力!

查看全部评分

回复 使用道具 举报
是运行的时候加载的,首先,命令行启动,那你自己得输入含有main方法的类路径,此时,加载main方法类,中间过程中用到哪个类就在默认的路径中查找加载。如果你是用jar形式打开的,那jar文件里面已经配好main方法类了,原理同上
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马