所以我正在努力组织我的课程和包。我有很多课程,所以我目前正在将它们分类到相应的包中。 现在我有两个类的以下情况:
一个人没有公开'构造:
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中的类?
答案 0 :(得分:1)
如果您不希望其他人实例化您的文件(选择更好的名称),您应该放在同一个包中。是的,它可能是混乱的,真实的,但很容易。
如果要隐藏构造函数,可以创建一个getInstance()方法,为您创建对象(工厂方法模式),在方法中可以检查调用者是否有权创建。例如,使用Java Reflection API。