
java 什么情况下是用反射的获取方法?
最近回头看看这些日子学的东西,思考使用场景,为什么学它,用在什么地方?到Reflect的时候,我迷失了?当我们解耦的时候,使用Class.ForName(“name”)来...
最近回头看看这些日子学的东西,思考使用场景,为什么学它,用在什么地方?
到Reflect的时候,我迷失了?
当我们解耦的时候,使用Class.ForName(“name”)来通过类的包.名称得到目标类的Class对象。
再使用反射,通过得到的Class对象,来获得Constructor的对象,或通过无参直接得到目标类的实例化对象。到此,我们已经拿到了我们需要的目标类的实例化对象,而没有通过new这个对象,算是解耦的目的达到了。
我的迷惑的地方到此就开始了!
既然得到了目标类的对象,直接踏实的使用对象.方法()就好了。为何还要花费更多的代码来通过反射得到Method,岂不是画蛇添足了吗?
到底什么情况下才需要使用反射来获取方法?我暂时想不到使用Method的场景,谁知道帮帮我,在此谢过~
谢谢大家的帮助,"夜色无边0001"的回答让我得到了我想要的答案,在此,我再详细的阐述下他给的思路:
问题描述中,我阐述了,当我们不确定要创建的实例 的目标类具体是哪个类,就需要动态的通过反射来来创建。
同理,当我们不确定具体应用将要使用哪个方法的时候,我们不可能给它写死,一定是采用动态的方式,需要用什么的时候,就调用什么,这个时候就用上了反射来获取方法。
最后还是要谢谢大家的鼎力帮助~ 展开
到Reflect的时候,我迷失了?
当我们解耦的时候,使用Class.ForName(“name”)来通过类的包.名称得到目标类的Class对象。
再使用反射,通过得到的Class对象,来获得Constructor的对象,或通过无参直接得到目标类的实例化对象。到此,我们已经拿到了我们需要的目标类的实例化对象,而没有通过new这个对象,算是解耦的目的达到了。
我的迷惑的地方到此就开始了!
既然得到了目标类的对象,直接踏实的使用对象.方法()就好了。为何还要花费更多的代码来通过反射得到Method,岂不是画蛇添足了吗?
到底什么情况下才需要使用反射来获取方法?我暂时想不到使用Method的场景,谁知道帮帮我,在此谢过~
谢谢大家的帮助,"夜色无边0001"的回答让我得到了我想要的答案,在此,我再详细的阐述下他给的思路:
问题描述中,我阐述了,当我们不确定要创建的实例 的目标类具体是哪个类,就需要动态的通过反射来来创建。
同理,当我们不确定具体应用将要使用哪个方法的时候,我们不可能给它写死,一定是采用动态的方式,需要用什么的时候,就调用什么,这个时候就用上了反射来获取方法。
最后还是要谢谢大家的鼎力帮助~ 展开
4个回答
2015-01-29 · 知道合伙人软件行家
关注

展开全部
等你学过SSH之后你就明白为要用反射了,牛B的框架都是通过配置文件,即反射机制来做的
例如吧,你想把a对象放到b对象中,但是你并不知道B对象的方法名叫什么
,或者并不知道用户会将方法名定义成什么
这个时候,你只需要在配置文件中,或者是用注解,写上去那么通过反射就可以得到某个方法了
反射机制是比较高级的东西,你还是踏踏实实的吧,
就这么说你可以理解不了,也并不知道他的意义在哪,
只有等你接触的框架,代码多了自然会明白他的作用
例如吧,你想把a对象放到b对象中,但是你并不知道B对象的方法名叫什么
,或者并不知道用户会将方法名定义成什么
这个时候,你只需要在配置文件中,或者是用注解,写上去那么通过反射就可以得到某个方法了
反射机制是比较高级的东西,你还是踏踏实实的吧,
就这么说你可以理解不了,也并不知道他的意义在哪,
只有等你接触的框架,代码多了自然会明白他的作用
追问
本人惭愧,SSH确实去年已学过,但一直没复习。
之后在学习EJB、SOA等的时候花了大量时间,特别是现在WildFly早就更新到9了,发生了很大的变化,网上没有相关的教学和文档分享,我只能一点点的啃官方文档,慢慢摸索(真的很慢),时间都浪费在那了,导致对之前所学没能及时巩固,所以现在才系统的屡清晰熟练强化它们。
您的解答的内容,我大致明白,我表示赞同。
追答
赞同你还不采纳..
展开全部
因为当那个成员的访问修饰符是private时,是不允许调用的,这时候可以用反射来调用这个成员,java中注解也是通过反射来实现的
追问
谢谢,你的这个回答确实是使用的反射来调用方法的场景之一,感谢你的帮助~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个动态调用的时候要用的,(在你不知道要调用什么方法的时候用的)
比如说我第一次 想调用方法1第二次想调方法2,难道你要写两个调用吗,如果有很多方法呢
比如说我第一次 想调用方法1第二次想调方法2,难道你要写两个调用吗,如果有很多方法呢
追问
一语惊醒梦中人,哥们,我顶你,确实正如你所说的,一下顿悟!
可能有的时候人的思维被局限在小圈子里,忽然外面有人喊了一声,指引了新的方向,欣喜的狂奔出来,视野更加的宽广了~ 谢谢
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询