私有方法也能通过反射获取到,私有方法的封装还有什么意义?
来源:6-5 谈谈ClassLoader
慕仔3163040
2019-03-25
老师您好,您的视频含金量很高,非常感谢学到了很多东西,但是我有个疑问没有想清楚,请您解答一下:
一个类如果封装了一个私有方法,其目的就是为了自己才能使用,但是我可以在其它类里面,通过反射的方式拿到这个类的私有方法并调用它,那某个类封装私有方法也能被别的类通过反射给访问到,这个私有方法的封装还有什么意义呢?
写回答
1回答
-
同学好,正所谓存在即合理,我理解的话,私有方法封装在里面,供第三方使用的时候,如果你的库已经打包成了jar,并且以接口调用的形式暴露给第三方,那么第三方一般情况下是不会层层去翻阅你的源码的,并且它也没必要翻阅源码,只需要关注接口。那么既然关注接口,你就是不能直接调用到里面的私有函数。虽然这个时候可以通过反射去调用,但是由于第三方只是依据接口来使用,并不关心底层实现,因此也看不到方法名,这也就意味着它们也不会自作主张,在没有摸透底层逻辑的情况下,直接指定私有函数方法名去调用,这样做也没有意义,反而容易出错。这个就跟spring框架一样,咱们平时也只是关心里面的一些库函数怎么使用,并不直接调用里面的私有函数,调用了也没意义。所以我理解私有函数就是一些不希望对方调用的函数,或者说不需要对方关心的一些底层实现,直接调用其实意义也不大。
20
相似问题