Поскольку ArrayList<Object>
и скажем ArrayList<String>
не являются связанными типами, то есть ArrayList<String>
не наследуется от ArrayList<Object>
и не может быть преобразовано в него.
Если на секунду мы представим этоможно сделать этот код небезопасным:
ArrayList<String> stringList = ...;
ArrayList<Object> objectList = stringList; // this is what is not allowed in reality
objectList.add(new Integer());
Теперь у вас есть целое число в stringList
, что определенно не то, что вы ожидаете получить в программе типа safe.