Podczas czytania oficjalnego samouczka Java na temat generycznych stwierdziłem, że możesz ograniczyć argument type (w tym przypadku T), aby rozszerzyć klasę i / lub więcej interfejsów za pomocą operatora `` and '' ( &) w następujący sposób:
<T extends MyClass & Serializable>
I otrzymuje &się ,(przez pomyłkę i wciąż działa, z ostrzeżeniem moll).
Moje pytanie brzmi, czy jest jakaś różnica między tymi dwoma:
<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma
I przykładowa metoda:
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;
}