【问题标题】:How many classes can be put in a Java package?一个Java包中可以放多少个类?
【发布时间】:2018-01-01 03:46:09
【问题描述】:

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

【问题讨论】:

标签: java class package packages


【解决方案1】:

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

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


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

我从 Java 规范中发现这句话在这种情况下很有价值 (source7.2):

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

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

正如您问题的其中一个 cmets 中所述,可能存在技术限制,但对于大多数用例而言,它们可能已经足够高了。根据您使用的实现,它也可能有很大差异。话虽如此,您可能可以毫无问题地拥有数百万个包和类。


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

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

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 2018-07-23
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多