ジェネリックスに関するJava公式チュートリアルを読んでいるときに、型引数(この場合はT
)を制限して、次のように「and」演算子(&
)でクラスやインターフェイスを拡張できることがわかりました。
<T extends MyClass & Serializable>
私は交換し&
て,
(誤って、まだマイナー警告で、動作します)。
私の質問は、これら2つの間に違いはありますか?
<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma
そして、例の方法:
static <T extends MyClass & Serializable> ArrayList<T> fromArrayToCollection(T[] a) {
ArrayList<T> arr = new ArrayList<T>();
for (T o : a) {
arr.add(o); // Correct
}
return arr;
}
5
@Doorknobは、OPがキーボードと同じキーボードを使用していると想定しています。
—
emory 2013
@emory私はそれが間違っていると思います-エラーは彼の指ではなく彼の脳にありました。同様に、Javaソースファイルで「インポート」の代わりに「インクルード」を使用しようとした場合と同様です。あなたはあなたの脳が間違ったものをタイプするようにあなたに言ったので、あなたは 'include'をタイプミスしました、これは様々な理由で可能です。
—
Nick Pickering
@ニコラス・ピカリング、そうです!私にとっては、キーボードのせいではなくタイプミスのせいでした。クラスが実装するインターフェースを記述するときは、それらをコンマで区切ります。
—
Alin Ciocan 2013