23

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

4

5 に答える 5

30

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

ただし、本当に問題を解決したい場合は、クラスが実装できるインターフェイスの数は、インターフェイスIDがJavaバイトコードで指定できる最大値、またはこれらのインターフェイスを実装するために必要なコードメモリの量によって制限されると言えます。バイトコードを保存するためのハードドライブスペースの量。これらはばかげた議論です。明らかに、コンピュータには無限のメモリ、無限のスループット、無限のコードスペースがないため、1つのjarに理論上の最大行数があるのと同じように、すべてに理論上の最大値があることがわかります。

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

于 2012-06-14T13:25:04.633 に答える
22

JVMの制限に関するJavaVM仕様から:

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

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

于 2012-06-14T13:28:52.353 に答える
8

制限は技術的よりも実用的です。

現実的な制限は、手書きのコードの数十にあります。生成されたコードの場合はもっと多くのことができますが、それだけの数がある場合は、デザインに何か問題があるのではないかと思います。

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

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

于 2012-06-14T13:26:58.520 に答える
2

クラスは無制限のnoを実装でき、無制限のnoInterfacesInterface拡張できますInterfacesが、ベストプラクティスはそれほど多くのインターフェイスを実装しないことです。

于 2012-06-14T13:32:16.023 に答える
-3

クラスが実装できるインターフェースの数に制限はありません。

于 2012-06-14T13:32:01.980 に答える