2
回答
求JavaWEB方面的大神,菜鸟请教一个问题~
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

反射机制:就是指在运行状态中对于任意一个类都可以知道它的所有属性和方法,

这个反射机制到底有什么用途啊?上面的话太笼统,不是很明白,请问我们在实际开发中哪些点上用到了反射机制?我们在访问一个项目时,项目中new了一个对象,然后通过该对象拿出对象当中的属性算不算反射?到底是什么意思啊?能不能用项目或者通俗的话讲一下,深表迷茫。。。。

<无标签>
举报
共有2个答案 最后回答: 3年前

你 new 出来的对象,类型都是你知道的。你调用这个对象的方法,访问这个对象的属性,都不是反射。

或者说,在常见的一些简单的业务场景里面,确实用不上反射。

但是,某些略微复杂或者需要动态化较多的地方,就会用到,比如你现在拿到的对象的类型不确定,或者说,不是你new出来的,比如是通过网络或者某个队列系统传到当前JVM实例,然后被你的程序反序列化出来。这时候你怎么处理这个对象?或许你只能让他转型为某个抽象的父类,甚至Object类。这时候这个对象很难使用。于是,你或许会说,首先想办法判断这个对象的类型,然后再强制转型成一个具体的对象,然后访问其方法或者参数?

如果这个对象可能的类型有几十上百种,是不是要在这里写上大量的if else或者case来判断转型之后调用其方法和属性?如果增加一种类型,你是不是要重新修改这个庞大的方法(含有大量判断的方法),然后编译部署?是不是有什么动态的方法进行判断执行调用?

就是反射,反射在这种场景里面就会有用武之地。

阅读spring或者hibernate这些框架的少量源码,就会发现不少这种情况。


--- 共有 1 条评论 ---
上帝爱众生嗯嗯,了解了,怪不得spring的底层都是反射 3年前 回复

假如你自己做一个ORM小框架,你会用到反射来将ResultSet的字段反射到Bean上面。

假如你要违反一个规则,你要去调用一个它类的private method或读写private field,你就得用反射。

等等...

顶部