私はこのJava docsを参照していました。 境界の 1 つがクラスの場合は、最初に指定する必要があります。私が感じているのは、どのような順序でも許可する必要があるということです。
なぜJavaにそのような制限があるのですか? これには具体的な理由がありますか?
複数の境界
前の例は、単一の境界を持つ型パラメーターの使用を示していますが、型パラメーターは複数の境界を持つことができます。
複数の境界を持つ型変数は、境界にリストされているすべての型のサブタイプです。境界の 1 つがクラスの場合は、最初に指定する必要があります。例えば:
Class A { /* ... */ }
interface B { /* ... */ }
interface C { /* ...
*/ }
class D <T extends A & B & C> { /* ... */ }
バインドされた A が最初に指定されていない場合、コンパイル時エラーが発生します。
class D <T extends B & A & C> { /* ... */ } // compile-time error ,but why ?