成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

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

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

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

很高興能回答你的問題:

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

總上所述,private只是個(gè)約定而已。