Скажите, что у вас есть arraylist, который определяется следующим образом:
ArrayList<String> someData = new ArrayList<>();
Позже в вашем коде из-за дженериков вы можете сказать следующее:
String someLine = someData.get(0);
И компилятор точно знает, что он получит строку. Да, дженерики! Однако это не удастся:
String[] arrayOfData = someData.toArray();
toArray()
всегда будет возвращать массив объектов, а не общий, который был определен. Почему метод get(x)
знает, что он возвращает, но toArray()
по умолчанию для объектов?