0

我正在创建一个库(android)。我把东西保存为像 com.domain.libname.datamodel 这样的包;com.domain.libname.exceptions;等等

我希望可以自由地在我的库中初始化一些公共可以读取的数据模型对象,但公共不应该初始化这些对象。尽管“包”访问修饰符在包中执行此操作,但我想跨同一项目/库中的包执行此操作。

有办法吗?或者它是否表明我没有以正确的方式包装东西?

4

1 回答 1

1

Java 中的包结构是扁平的:如果你想让某些东西在你的包之外可见,那么它对所有包都是可见的;没有办法限制“子包”或具有特定前缀的包的可见性。

我的观点是一个包应该实现一个特性,以便必须合作的类可以这样做,而不必将不必要的杂物暴露给外部。这意味着你不会有像“datamodel”或“exceptions”这样的“人工”包;相反,数据模型和异常将位于实际需要它们来实现一组用例的包中。但是我可以看到在大型应用程序或库中如何变得不切实际。

于 2013-09-27T11:47:29.747 回答