2013-10-23 38 views
0

比方說,我使用的是第三方的jar A.jar在我的項目,有一些成員(類,方法等)默認訪問(包私人)。現在,如果我創造我的項目中相同的包名,我能夠從a.jar文件的默認訪問修飾符來訪問成員(我想這與在Eclipse Java項目)。Java包,私人的訪問修飾符行爲包衝突的情況下

Oracle's document說:

如果一個類沒有修飾符(默認值,也稱包私有),只在其自己的包是可見的

這不是哲學在這種特殊情況下的使用違反了(太不使用反射),因爲它不是什麼A.jar開發商本來打算,因爲她會在她的包訪問此特定成員都只想類?

而且它的意思是,包私人是一種方便的機制,但不能用於保護數據等等?

+0

在反射的情況下,沒有範圍修改可以「被用於保護數據」。像公共和私人這樣的修飾符是組織工具,而不是安全機制。 –

+0

是的,我明白,無論如何反射將在SecurityManager中被禁用。但是我的問題是沒有反思,當我想確保某些東西只能在我的軟件包中訪問時。對不起,在那裏混亂。 – Sumit

+3

http://docs.oracle.com/javase/tutorial/deployment/jar/sealman.html –

回答

0

這不是哲學在這個特定的使用情況違反了(太不使用反射),因爲它是不是有什麼a.jar文件的開發者有打算,因爲她會一直想只有類她的包裹訪問這個特定的成員?

如果她使用了默認訪問修飾符,她對保護默認成員的興趣就會降低。