卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

java是什么 既然Java反射可以訪問和修改私有成員變量,那封裝成private還有意義么?

既然Java反射可以訪問和修改私有成員變量,那封裝成private還有意義么?很高興能回答你的問題:簡單來說,private并不是解決“安全”問題的。安全是指不讓代碼被非法看到/訪問。但是只要人能拿到

既然Java反射可以訪問和修改私有成員變量,那封裝成private還有意義么?

很高興能回答你的問題:

  1. 簡單來說,private并不是解決“安全”問題的。
  2. 安全是指不讓代碼被非法看到/訪問。但是只要人能拿到代碼,總會有辦法去查看和改變代碼。
  3. private想表達(dá)的不是“安全性”的意思,而是OOP的封裝概念,是一種編譯器可以幫助你的設(shè)計(jì)。這就像是一家沒人的店掛了個牌子“閑人免進(jìn)”,但你真要進(jìn)去還是有各種辦法可以辦到。所以private,以及所有其他的access modifier都有一層隱含的含義:如果你按照遵守這套規(guī)則,開發(fā)者可以保證不問題(不考慮bug的情況下);否則,后果自負(fù)。
  4. 比如,你在用spring的IoC的時候,你知道你要“注入”,不管它是不是private的,你知道“注入”是你自己控制的,是你設(shè)計(jì)好的效果。那么通過spring的IoC利用反射幫你注入一些private property是再正常不過的用法。
  5. 再比如,單元測試,你就想測一個private方法。但是因?yàn)閜rivate的緣故就是測不了。于是你可以用反射繞開這個限制,開心的做測試。

總上所述,private只是個約定而已。