私有方法也能通过反射获取到,私有方法的封装还有什么意义?

来源:6-5 谈谈ClassLoader

慕仔3163040

2019-03-25

老师您好,您的视频含金量很高,非常感谢学到了很多东西,但是我有个疑问没有想清楚,请您解答一下:

一个类如果封装了一个私有方法,其目的就是为了自己才能使用,但是我可以在其它类里面,通过反射的方式拿到这个类的私有方法并调用它,那某个类封装私有方法也能被别的类通过反射给访问到,这个私有方法的封装还有什么意义呢?

写回答

1回答

翔仔

2019-03-26

同学好,正所谓存在即合理,我理解的话,私有方法封装在里面,供第三方使用的时候,如果你的库已经打包成了jar,并且以接口调用的形式暴露给第三方,那么第三方一般情况下是不会层层去翻阅你的源码的,并且它也没必要翻阅源码,只需要关注接口。那么既然关注接口,你就是不能直接调用到里面的私有函数。虽然这个时候可以通过反射去调用,但是由于第三方只是依据接口来使用,并不关心底层实现,因此也看不到方法名,这也就意味着它们也不会自作主张,在没有摸透底层逻辑的情况下,直接指定私有函数方法名去调用,这样做也没有意义,反而容易出错。这个就跟spring框架一样,咱们平时也只是关心里面的一些库函数怎么使用,并不直接调用里面的私有函数,调用了也没意义。所以我理解私有函数就是一些不希望对方调用的函数,或者说不需要对方关心的一些底层实现,直接调用其实意义也不大。

2
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程