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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面代码,我既然能用反射生成类对象,为什么平时还用类实例化生成对象呢,求解
  1. public static void main(String[] args) {
  2.                         Test8 t2=new Test8();
  3.                         Test8 t = null;
  4.                         try {
  5.                                 t = Test8.class.newInstance();
  6.                         } catch (InstantiationException e) {
  7.                                 // TODO Auto-generated catch block
  8.                                 e.printStackTrace();
  9.                         } catch (IllegalAccessException e) {
  10.                                 // TODO Auto-generated catch block
  11.                                 e.printStackTrace();
  12.                         }
  13.                         System.out.println(t.toString());
  14.                         System.out.println(t2.toString());
  15.                
  16.         }
  17.         @Override
  18.         public String toString() {
  19.                 return "反射创建成功";
  20.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

4 个回复

倒序浏览
效率问题吧,毕竟反射是在运行阶段又去解析它的字节码,就像你去摸索一个未知的事务似的,带来的开销必然大,个人的理解,哈哈
回复 使用道具 举报
这是2个不同的概念,反射是在运行时期得到得到对象的属性,方法等,不用管对象的类型是什么,只要找到他们的属性方法就可以调用,降低了程序的耦合性,而实例化对象是通过编译器编译的
回复 使用道具 举报
反射是给做框架的人用的.
回复 使用道具 举报
本帖最后由 straw 于 2013-8-20 22:48 编辑

实现过程不一样,用途也是不一样.
反射实现过程是通过在内存中的字节码去创建对应该类的实例,这个对象也只能在内存中.这种方式的设计主要是用于框架开发使用的,易于扩展.
而用类去实例本类对象是程序在执行时才在内存堆中开闭空间并应用实例,这种方法和类来创建的性能上好像没什么差别吧!但是在原代码中使用是很方便的,缺陷就是没有像反射那样扩展性强.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马