クラスファイルはいくつのインターフェースを実装できますか?クラスファイルで使用されるインターフェイスの数に制限はありますか?前もって感謝します。
5 に答える
すべての実用的な目的で、クラスが実装できるインターフェースの数に制限はありませんが、Javaでは複数のスーパークラスから継承することはできません。
ただし、本当に問題を解決したい場合は、クラスが実装できるインターフェイスの数は、インターフェイスIDがJavaバイトコードで指定できる最大値、またはこれらのインターフェイスを実装するために必要なコードメモリの量によって制限されると言えます。バイトコードを保存するためのハードドライブスペースの量。これらはばかげた議論です。明らかに、コンピュータには無限のメモリ、無限のスループット、無限のコードスペースがないため、1つのjarに理論上の最大行数があるのと同じように、すべてに理論上の最大値があることがわかります。
しかし、クラスが実装できるインターフェイスの理論上の最大数を本当に知りたい場合は、65535です。
JVMの制限に関するJavaVM仕様から:
クラスまたはインターフェースの直接スーパーインターフェースの数は、ClassFile構造体のinterfaces_count項目のサイズによって65535に制限されます。
それが唯一の制限です。そして、それはコンパイルされたJavaバイトコードの構造によるものです。
制限は技術的よりも実用的です。
現実的な制限は、手書きのコードの数十にあります。生成されたコードの場合はもっと多くのことができますが、それだけの数がある場合は、デザインに何か問題があるのではないかと思います。
ほとんどの大規模なプロジェクトのクラス数は1万未満であるため、1つのクラスにこれほど多くのインターフェイスを実装する理由を想像するのは困難です。
クラスは無制限のnoを実装でき、無制限のnoInterfaces
をInterface
拡張できますInterfaces
が、ベストプラクティスはそれほど多くのインターフェイスを実装しないことです。
クラスが実装できるインターフェースの数に制限はありません。