4

可能重复:
Java:子包可见性?

这是问题Java 的延续:子包可见性?. 询问的原因是为了引起更广泛社区的关注。

问题odp.proj 和 odp.proj.subpackage 这两个包之间有什么关系吗?

有人试图在这里回答它,但未能描述它。

4

4 回答 4

6

odp.proj不,odp.proj.subpackage从 Java 语言的角度来看,两者之间没有关系。

对于代码,odp.proj.subpackage 将驻留在 odp.proj 的子目录中,并且一些工具和 IDE 可能会将它们组合在一个 UI 中,但是关于语言访问控制或其他语言功能没有关系。

Java 没有子包的概念,因此 odp.proj.subpackage 和 odp.proj 与任何其他不同命名的包一样彼此不同。

于 2012-11-20T21:10:13.077 回答
3

简短的回答

您正在寻找的确切功能不存在。

长答案

他们考虑为 Java 1.7 做这件事,但该案例处于休眠状态。

就实际情况而言,除了目录结构、关键字之类的东西odp.proj之外,它们之间根本没有任何关系——除了该语句没有从中获取任何类odp.proj.subpackageprotectedimport odp.proj.*;odp.proj.subpackage

解决您想要的内容的一种方法是为您想要公开的内容发布 API 规范,并将其余部分保留为未记录或私人记录的内容。您甚至可以使用ProGuard之类的东西来混淆每个版本中的私有类。

于 2012-11-20T21:13:33.657 回答
2

Java 没有子包的概念。

除了组织之外,包使用和“包”(空白)修饰符定义方法/字段的可访问性protected,它允许同类和同包访问。但是,这种同包访问也不包括子包类。

于 2012-11-20T21:10:39.880 回答
0

通常,如果包名称包含“内部”一词,则用户不应直接使用它,因为不能保证这些包将出现在未来的版本中。这只是一个命名约定,但仍然可以作为一种解决方法。

于 2012-11-20T22:06:54.167 回答