在Java中,通過將訪問修飾符保留爲默認值(空白),這些字段僅對同一包中的成員可訪問。但是,這並不妨礙其他人在相同的包中聲明他們的類,然後從那裏訪問「默認」字段。
有沒有一種方法可以讓Java字段C#相當於internal
。也就是說,當我構建我的庫(JAR文件)時,其他人無法從JAR外部訪問這些字段?即使在與我的課程相同的包中聲明他們的課程時也是如此。
這是我在我的庫聲明:Java相當於C#的「內部」
package com.my.package;
class MyRestrictedClass{
}
我試圖阻止我的圖書館的用戶從他們的項目與我的罐子加入到他們的構建路徑例如:
package com.my.package; //Add their class to my package
public class DeveloperClass{
public void main(){
MyRestrictedClass foo = new MyRestrictedClass();
}
}
我試過了。但是我仍然可以從jar外部訪問我的「默認」類。我檢查了我的清單,它確實是密封的。 – AxiomaticNexus
你確定你的「默認」類是正確定義的嗎? – CPerkins
我想: 'class MyClass {}' 從一個將jar添加到其構建路徑的項目中,我仍然可以這樣做:'MyClass myClass = new MyClass();'。只有當我聲明調用代碼當然是在相同的包中。 – AxiomaticNexus