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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 应佳锋 中级黑马   /  2012-3-28 23:51  /  2380 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Class c=  Student.class;
          Constructor con=  c.getConstructor(int.class);
         Student s=(Student)   con.newInstance(15);
        System.out.println( s.getAge());
问题1:射调用构造函数 之后 返回后的是 不是都是这个构造函数所在的类的对象
问题2:                Student s=new Student(15);
         System.out.println(s.getAge());也一样可以获得啊 为什么要用反射    感觉反射的效率还慢

4 个回复

倒序浏览
主要是还没有用到框架,所以感受不出来反射的好处,这么说吧,当一个团队完成一个项目以后,交出去的是编译后的字节码打成的包,是封装过的,对方是得不到源代码的,如果有一天,对方需要改善程序的话,就得通过反射来得到相关的信息了。
回复 使用道具 举报
反射在框加用里面用的多,特别是Hibernate,在调试程序用JUnit这个工具的时候,用反射对程序代码进行测试用的多,可对实例,方法,源文件进行测试。
回复 使用道具 举报
这些其实张老师的课里都有讲
问题1:反射调用构造函数,newInstance()由于程序本身并没有记录来自那个类,所以得到的是一个Object的对象,再所以要用(Student)转换一下
问题2:使用反射的原因:当类名或对象名在编写程序的时候并不确定(比方说类名是作为参数传进来的),这时只能用反射的方法调用这些类或对象的方法。
回复 使用道具 举报
反射其实就是程序能够自检查自身信息.反射可以使得程序更加灵活,可以在程序运行过程中,动态的去创建对象,调用方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马