Java 包组织和访问修饰符

Java package organization and access modifier

因此,我正在努力整理 类 和包裹。我有很多 类,所以我目前正在将它们分类到相应的包中。 现在我有以下情况 2 类:

具有 'not public' 构造函数的一个:

package example;
public class File { 
    File() { // constructor should not be public 
    }   
    // stuff...
}

一个使用另一个构造函数:

package example.specialfiles;
import example.File;
public class CatalogFile {
    private File wrappedFile;   
    CatalogFile() {
        wrappedFile = new File();
    }   
    // stuff...
}

在 eclipse 中看起来像 this

显然不能在CatalogFile 中调用File-constructor,因为它位于另一个包中。

因为没有 c#-like internal 我能想到的唯一可行的解​​决方案是将它们都放在同一个包中,这在我看来打破了包的目的。

是否有任何其他解决方案或解决方法来独立于包结构在 Eclipse 中组织 类?

如果你不想让别人实例化你的文件(选择更好的名字),你应该放在同一个包中。是的,它可能很乱,但很简单。

如果你想对其他人隐藏你的构造函数,你可以创建一个 getInstance() 方法来为你创建你的对象(工厂方法模式),并且在该方法中你可以检查调用者是否有权创建.例如 Java 反射 API.