当前位置: 代码迷 >> J2SE >> 用java反射机制实例化对象的好处在哪儿,该怎么解决
  详细解决方案

用java反射机制实例化对象的好处在哪儿,该怎么解决

热度:334   发布时间:2016-04-23 20:18:01.0
用java反射机制实例化对象的好处在哪儿
rt
第一次接触到java反射,有很多不明白

Class<?> demo = null;
demo = Class.forName("Reflection.Person");
Person person = (Person)demo.newInstance();

我想问下这样做的好处是什么?
Person person = new Person()一句话不就搞定了么?
望指教。
------解决思路----------------------
一般的时候都用不到,但是写框架的时候用的很多,例如Spring的IoC。
Java现在支持模板了,可以用Class<T>来自己加载,可以不用类型强制转换了。
------解决思路----------------------
这样当然没好处。
一般是用来做工具类的。

分2部分:
1.一堆高深的java类。
2.简单的字符串 例如xml  也就是说配置表吧。

因为配置表的内容是不固定的,所以具体要调那个java类是不知道的。
当然,如果那堆高深的java类是你自己写的,或者可选择的空间已限定好了,那么用一下swtich也是可以的。

------解决思路----------------------
楼主问的是用反射机制实例化对象的好处,不是反射的好处,那我就回答这个问题:
用反射机制实例化对象没有好处,是一种不得已而为之的写法。

demo.newInstance(); 
要求demo类必须非abstract,   interface 这类不能直接new的,
还必须要提供无参公有构造方法,而 new Person()这种写法在编译期就可以避免上述问题,
因此:如果你只有在运行时才能知道具体的类,那你只有使用class.newInstance(); 

专门学反射没什么意义,你只要知道反射大概能干什么就行了。具体写法在项目需要的时候到网上找找资料看看就可以了,用过几次就明白了。
  相关解决方案