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();
专门学反射没什么意义,你只要知道反射大概能干什么就行了。具体写法在项目需要的时候到网上找找资料看看就可以了,用过几次就明白了。