反射到底有什么用??????????????????

notlogin 2011-07-06 03:59:53
我知道的反射的作用就是“查找类的方法或属性”。

如果只是为了查找类的方法和属性,借助于Eclipse不是也可以看到么?

关于反射,我在项目中用到的就是JavaBean属性的复制,因为一些原因,不能使用beanutils,所以使用了反射来复制JavaBean的值。反射还有其他用处么?
...全文
588 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
SHARPSEVEN 2012-03-02
  • 打赏
  • 举报
回复
15楼说得很好,清楚明了
wuzhiwenk3001 2012-02-23
  • 打赏
  • 举报
回复
这样说,如果想学好框架,就要学好反射吧~~
北吹 2012-01-17
  • 打赏
  • 举报
回复
看了这么多回复,我忽然想起了天龙八部里的情节,鸠摩智去少林挑战,号称自己会很多少林72绝技,其实却是用小无相功为核心发功的。反射有点像这个,谁也不知道别人丢给自己的是什么武功秘籍,但用反射却能够很优雅的施展这些武功。
lacus87 2011-07-12
  • 打赏
  • 举报
回复
框架都用的反射,要不然怎么实现配置化?
luckygino 2011-07-09
  • 打赏
  • 举报
回复
对于初学者而言 只要清楚反射提供了一种创建类的手段就可以了
在实际的开发过程中也用得不多

当你开发三四年之后 运用了框架技术
你就知道 反射虽小 功能强大啊
bolink5 2011-07-09
  • 打赏
  • 举报
回复
反射有什么用,就好比金庸小说中的内功,再犀利的招式没有内功就发挥不出其应用的功效
典型的SSH 中就使用到了大量的反射,spring的依赖注入和aop,s2的拦截器等等

反射也有不好的地方 使运行状态中的java属性和方法可以随便调用,存在安全性的问题;相对而言消耗的内存也要多的多

飞跃颠峰 2011-07-06
  • 打赏
  • 举报
回复
框架本身也是个很典型的应用反射的例子,你不要只看到JavaBean,框架从url到Action的映射、filter的定义等等也是通过反射做到的,
飞跃颠峰 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 notlogin 的回复:]
哦,好吧,我表达错误 = =
请教下,除了复制JavaBean,还有什么时候可能用到反射?
[/Quote]

反射的核心是运行时才动态加载类或调用方法/访问属性,它不需要事先(写代码的时候)知道运行对象是谁
这些可能你能看明白,但没遇到一个实际情况很难理解。
举个例子好了,假如让你通过一个XML配置文件(或任何自己定义格式的文本文件)来控制Java程序的执行并输出结果,当改变了传入参数或甚至改变被加载的类时,都不需要修改Java代码而只需要修改配置文件,你应该怎么做?
24K純帥 2011-07-06
  • 打赏
  • 举报
回复
JAVA反射机制主要提供了以下功能:
1.在运行时判断任意一个对象所属的类
2.在运行时构造任意一个类的对象
3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)
4.在运行时调用任意一个对象的方法(*****注意:前提都是在运行时,而不是在编译时)
iis81365341 2011-07-06
  • 打赏
  • 举报
回复
动态地加载某个类,调用类的方法或属性。
据说还可以调用其他对象的私有方法,呵呵。
syoumei 2011-07-06
  • 打赏
  • 举报
回复
反射都是些生成实例,执行方法什么的。那为什么不直接new或者直接执行实例的方法呢?

这说明需要执行的处理类型事先是不知道的,在运行时确定。也就是说有这种需求的时候就要用反射。

一般都是些容器类型的工具框架才需要。等写到了自己就会想起来用。

notlogin 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 alexandertech 的回复:]

引用 8 楼 notlogin 的回复:

这个我知道,但是那些框架都是人家封装好的
我的意思是,在开发的时候,我们自己什么情况下可以单独的使用反射,而不是调用那些利用反射机制做好的,诸如spring hibernate中的API


如果是这样你提问的方式不恰当
不应该问反射有什么用
而应该问反射对我有什么用

具体到对某个程序员有什么用,要看具体情况
可能很多人永远也不……
[/Quote]
哦,好吧,我表达错误 = =
请教下,除了复制JavaBean,还有什么时候可能用到反射?
飞跃颠峰 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 notlogin 的回复:]

这个我知道,但是那些框架都是人家封装好的
我的意思是,在开发的时候,我们自己什么情况下可以单独的使用反射,而不是调用那些利用反射机制做好的,诸如spring hibernate中的API
[/Quote]

如果是这样你提问的方式不恰当
不应该问反射有什么用
而应该问反射对我有什么用

具体到对某个程序员有什么用,要看具体情况
可能很多人永远也不需要自己写反射代码
毕竟很多其它高级语言没有反射机制,不是也被使用得很好么
amos1989 2011-07-06
  • 打赏
  • 举报
回复
主要用到的地方还是写工具,写框架。。
notlogin 2011-07-06
  • 打赏
  • 举报
回复
比如LZ(我)说的 不能用beanutils 复制JavaBean属性的时候,就可以使用反射来复制。
我说的是这个意思,不是说spring hibernate 中用没用到反射的问题
notlogin 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 alexandertech 的回复:]

官方一点的说法就是:
反射允许程序创建和控制任何类的对象,无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常普通的方式与对象协作的库。Java reflection 非常有用,它使类和数据结构能按名称动态检索相关信息,并允许在运行着的程序中操作这些信息。

通俗点的说法就是:
提供了对包括当前未知类的动态灵活的处理能力,比如没有反射的话,现在用于Web开发的很多框架就做不出来。
……
[/Quote]

这个我知道,但是那些框架都是人家封装好的
我的意思是,在开发的时候,我们自己什么情况下可以单独的使用反射,而不是调用那些利用反射机制做好的,诸如spring hibernate中的API
syoumei 2011-07-06
  • 打赏
  • 举报
回复
aop
generic
annotation
用到的地方太多了...
chenchenyangll 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 alexandertech 的回复:]

官方一点的说法就是:
反射允许程序创建和控制任何类的对象,无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常普通的方式与对象协作的库。Java reflection 非常有用,它使类和数据结构能按名称动态检索相关信息,并允许在运行着的程序中操作这些信息。

通俗点的说法就是:
提供了对包括当前未知类的动态灵活的处理能力,比如没有反射的话,现在用于Web开发的很多框架就做不出来。
……
[/Quote]

呀 升星了啊 = = 真速度。。。



我还是想问 借助于Eclipse怎么看到类的方法或属性?
飞跃颠峰 2011-07-06
  • 打赏
  • 举报
回复
官方一点的说法就是:
反射允许程序创建和控制任何类的对象,无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常普通的方式与对象协作的库。Java reflection 非常有用,它使类和数据结构能按名称动态检索相关信息,并允许在运行着的程序中操作这些信息。

通俗点的说法就是:
提供了对包括当前未知类的动态灵活的处理能力,比如没有反射的话,现在用于Web开发的很多框架就做不出来。
gukuitian 2011-07-06
  • 打赏
  • 举报
回复
动态地加载某个类,调用其某个方法或属性。
加载更多回复(3)

62,614

社区成员

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

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