可以在Java包中放入多少个类?

时间:2017-07-26 02:33:52

标签: java class package packages

可以放入Java包中的Java类(公共和非公共)的数量是否有任何限制?

1 个答案:

答案 0 :(得分:2)

tl; dr:该值取决于实现,因为在JVM或Java规范的任何地方都没有定义。

实际上,它可能在maxUint16和maxUint64之间。


由于JVM的性质,存在很多限制,但是类和包数不是其中之一。

在这种情况下,我发现Java规范中的这句话很有价值(source 7.2):

例如,使用数据库存储软件包的系统每个编译单元最多不得强制使用一个公共类或接口

它确实鼓励JVM实现避免这种限制,即使它使用文件系统以外的其他东西来存储诸如包和类之类的编译工件。

正如您对问题的评论之一所指出的那样,可能存在技术限制,但对于大多数用例而言,它们可能足够高。根据您所使用的实现,它也可能相差很大。话虽如此,您可能可以拥有数百万个程序包和类,而不会出现任何问题。


为了完整性和可访问性,我将在此处插入@Holger评论:

规范中没有限制,因此您可以将类放入包中,直到遇到技术限制为止。如果未达到文件系统或归档格式的极限,则运行时实现可能会使用数组或集合来保存类,这将数量限制为接近2³¹的程度。您可能在……之前遇到了内存限制。