用java反射机制实例化对象的好处在哪儿

a455295165 2014-09-28 10:30:26
rt
第一次接触到java反射,有很多不明白

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

我想问下这样做的好处是什么?
Person person = new Person()一句话不就搞定了么?
望指教。
...全文
834 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
嘟嘟xo 2014-09-28
  • 打赏
  • 举报
回复
楼主的代码创建实例的方式, 本身没什么意思. 但是这段代码的意思, 大概是说可以动态的创建对象的实例. 比如可以字符串传入类路径, 只要类路径中指定的类是继承Person类的, 那就可以用这段代码实例化一个Person对象出来.
dzq584462393 2014-09-28
  • 打赏
  • 举报
回复
不管好不好,最少提供了你一种创建类事例的一种方法,是不是?
福来哥 2014-09-28
  • 打赏
  • 举报
回复
楼主问的是用反射机制实例化对象的好处,不是反射的好处,那我就回答这个问题: 用反射机制实例化对象没有好处,是一种不得已而为之的写法。 demo.newInstance(); 要求demo类必须非abstract, interface 这类不能直接new的, 还必须要提供无参公有构造方法,而 new Person()这种写法在编译期就可以避免上述问题, 因此:如果你只有在运行时才能知道具体的类,那你只有使用class.newInstance(); 专门学反射没什么意义,你只要知道反射大概能干什么就行了。具体写法在项目需要的时候到网上找找资料看看就可以了,用过几次就明白了。
zhjdg 2014-09-28
  • 打赏
  • 举报
回复
这样当然没好处。 一般是用来做工具类的。 分2部分: 1.一堆高深的java类。 2.简单的字符串 例如xml 也就是说配置表吧。 因为配置表的内容是不固定的,所以具体要调那个java类是不知道的。 当然,如果那堆高深的java类是你自己写的,或者可选择的空间已限定好了,那么用一下swtich也是可以的。
Inhibitory 2014-09-28
  • 打赏
  • 举报
回复
一般的时候都用不到,但是写框架的时候用的很多,例如Spring的IoC。 Java现在支持模板了,可以用Class<T>来自己加载,可以不用类型强制转换了。
a455295165 2014-09-28
  • 打赏
  • 举报
回复
感谢大家的回答,虽然还是有点模糊,但是明白了很多。再去多了解下
Golden_Dog 2014-09-28
  • 打赏
  • 举报
回复
引用 1 楼 Inhibitory 的回复:
一般的时候都用不到,但是写框架的时候用的很多,例如Spring的IoC。 Java现在支持模板了,可以用Class<T>来自己加载,可以不用类型强制转换了。
+1
HinanaiTenshi 2014-09-28
  • 打赏
  • 举报
回复
运行时加载并创建对象用的

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧