Java包组织和访问修饰符

时间:2015-03-17 21:48:28

标签: java eclipse package internal

所以我正在努力组织我的课程和包。我有很多课程,所以我目前正在将它们分类到相应的包中。 现在我有两个类的以下情况:

一个人没有公开'构造:

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#的internal,我能想到的唯一可行解决方案是将它们放在同一个包中,这在我看来打破了包的目的。

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

1 个答案:

答案 0 :(得分:1)

如果您不希望其他人实例化您的文件(选择更好的名称),您应该放在同一个包中。是的,它可能是混乱的,真实的,但很容易。

如果要隐藏构造函数,可以创建一个getInstance()方法,为您创建对象(工厂方法模式),在方法中可以检查调用者是否有权创建。例如,使用Java Reflection API。

相关问题