Во время чтения официального учебника Java о дженериках я обнаружил, что вы можете ограничить аргумент типа (в данном случае - T
) расширять класс и/или больше интерфейсов с помощью оператора "и" (&
) например:
<T extends MyClass & Serializable>
Я заменил &
на ,
(по ошибке и все еще работает с незначительным предупреждением).
Мой вопрос в том, есть ли разница между этими двумя:
<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;
}