Читаючи офіційний підручник 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;
}
5
@Doorknob ви припускаєте, що ОП використовує клавіатуру та ту саму клавіатуру, що і ви.
—
emory
@emory Я думаю, що навіть це неправильний напрямок - помилка була не в його пальцях, а в його мозку. Так само, як якщо б ви намагалися використати "включити" замість "імпорту" у вихідному файлі Java. Ви неправильно ввели "включити", тому що ваш мозок сказав вам ввести неправильну річ, що можливо з різних причин.
—
Нік Пікерінг
@Nicholas Pickering, правильно! Для мене це було не місією через клавіатуру, а через мозок. Коли ви пишете, які інтерфейси реалізує клас, ви розділяєте їх комою.
—
Алін Чьокан