一个类文件可以实现多少个接口?

25
一个类文件可以实现多少个接口?类文件使用的接口数量是否有限制?
4个回答

32

就实际目的而言,一个类可以实现的接口数量没有限制,但 Java 不允许从多个超类继承。

然而,如果你真的想挑剔一下,可以说一个类实现的接口数量受到 Java 字节码中接口 ID 的最大值、实现这些接口所需的代码内存量以及存储字节码所需的硬盘空间等因素的限制。这些都是无聊的争论。显然,由于计算机没有无限的内存、吞吐量和代码空间,我们知道每件事情都有理论上的极限,就像一个单独 JAR 文件中的代码行数也有理论上的极限。

但如果你真的非常想知道一个类可以实现的理论上的最大接口数量,那就是 65535。


我曾经有过继承多个类的课程。而且它非常美妙。 - mre
是的,Python 是一门优美的编程语言。 - Hans Z
@mre 我觉得你不理解"That's what she said"是怎么回事 ಠ_ಠ - Hans Z
1
她也说了这句话!:D - mre
1
http://www.youtube.com/watch?v=SAAi_42uIkQ - Hans Z
@HansZ 信息很棒! - Gaurav

23

从Java虚拟机规范中关于JVM的限制

由于ClassFile结构中interfaces_count的大小限制,类或接口的直接超级接口数量不能超过65535个。

这是唯一的限制。由于编译后的Java字节码的结构而导致的。


Java语言规范 != JVM规范。 - dacwe
@dacwe 这里的限制不在于Java语言,而在于ClassFile规范。 - Jivings
1
没错!Java可以编译成除字节码以外的其他形式... - dacwe

9
限制更多的是实践意义而非技术意义。
手写代码的实际限制在几十个。对于生成的代码,可以拥有更多,但如果你拥有那么多代码,我怀疑你的设计中存在问题。
文件格式中的限制为65535,详情请参阅 Java虚拟机规范
大多数大型项目都少于10K类,所以很难想象为什么你想在一个类中实现那么多接口。

2

你的类可以实现无限数量的接口,一个接口也可以扩展无限数量的接口,但最好的做法是不要实现太多接口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接