web-dev-qa-db-ja.com

クラスファイルが実装できるインターフェイスの数

クラスファイルはいくつのインターフェースを実装できますか?クラスファイルで使用されるインターフェイスの数に制限はありますか?前もって感謝します。

21
sudeep cv

すべての実用的な目的のために、クラスが実装できるインターフェースの数に制限はありませんが、Javaでは、複数のスーパークラスから継承できません。

ただし、実際に細工したい場合は、クラスが実装できるインターフェースの数は、インターフェースIDの最大値(Javaバイトコード、またはコードの量)によって制限されていると言えますこれらのインターフェイスを実装するために必要なメモリ、またはバイトコードを格納するためのハードドライブ領域の量。これらはばかげた引数です。明らかに、コンピュータに無限メモリ、無限スループット、および無限コードスペースがないため、単一のjarに含めることができるコードの理論的な最大行数と同じように、すべての理論上の最大値。

ただし、クラスが実装できるインターフェースの理論上の最大数を本当に知りたい場合は、65535です。

26
Hans Z

Java VMの仕様 JVMの制限) から:

クラスまたはインターフェースの直接スーパーインターフェースの数は、ClassFile構造体のinterfaces_countアイテムのサイズによって65535に制限されます。

それが唯一の制限です。そして、それはコンパイルされたJavaバイトコードの構造によるものです。

22
Jivings

この制限は、技術的というより実用的です。

手書きのコードの現実的な制限は数十にあります。生成されたコードについては、はるかに多く持つことができますが、その数が多すぎると、設計に問題があると思います。

ファイル形式の制限は65535です。

ほとんどの大規模なプロジェクトのクラスは10K未満であるため、1つのクラスに多くのインターフェイスを実装する理由を想像するのは困難です。

8
Peter Lawrey

クラスはInterfacesを無制限に実装でき、1つのInterfaceInterfacesを無制限に拡張できますが、あまり多くのインターフェースを実装しないことをお勧めします。

2
amicngh