Рассмотрим три оператора:
Первый Object obj = listA.remove(2)
использует необработанный тип.Это определение содержит объект.Все унаследовано от Object, поэтому оно может содержать что угодно.Это может привести к проблемам.Посмотрите на этот пост , чтобы понять, почему это нежелательно.
Второй тип строго напечатан.Вы можете только удалить элементы и назначить их типу из определения (в ArrayList<Book>
он должен соответствовать Book).Это способ для java-компилятора проверить ваши типы, чтобы убедиться, что вы работаете со всеми одинаковыми типами.Если вы не соответствуете, я считаю, что это ошибка компилятора.
Третий демонстрирует, почему первый элемент является проблемой.Прочтите этот пост , и он скажет вам, почему.