, если вы не укажете, это будет так же, как если бы вы указали ArrayList , что означает, что любой объект может быть добавлен в ArrayList.Проверки типов, которые выполняются при указании класса, происходят во время компиляции, а не во время выполнения, поэтому невозможно, чтобы вещи работали так, как вы предлагаете (определяя их более конкретный класс во время выполнения).