我正在创建一个库(android)。我把东西当作包裹一样 com.domain.libname.datamodel; com.domain.libname.exceptions;等
我希望能够自由地在我的库中初始化一些公共可以读取的数据模型对象,但是public不应该初始化这些对象。虽然'package'访问修饰符在包中执行此操作,但我想在同一项目/库中的包中执行此操作。
有办法吗?或者它是否表明我没有以正确的方式包装东西?
答案 0 :(得分:1)
Java中的包结构是扁平的:如果您希望在包外看到某些东西,那么所有包都可以看到它;没有办法限制对“子包”或具有特定前缀的包的可见性。
我的观点是,一个包应该实现一个功能,所以必须合作的类可以这样做,而不必将不必要的暴露暴露到外面。这意味着你不会拥有像“datamodel”或“exception”这样的“人工”软件包;相反,数据模型和异常将在实际需要它们来实现一组用例的包中。但我可以看到在大型应用程序或库中如何变得不切实际。