ArrayStoreExcepton может появиться при попытке добавить в массив переменную недопустимого типа. Осуществить это можно, так как массивы ковариантны. Поэтому они могут использовать массивы того же типа, что и их родители. Используя операцию приведения к классу Object[] можно попробовать добавить любой объект в исходный массив.
Однако, язык Java гарантирует, что любой элемент хранящийся в массиве, имеет тот же тип, что и весь массив. Поэтому, существует проверка во время выполнения, способная выдать исключение ArrayStoreException. То есть программа скомпилируется без ошибок, но при попытке положить в массив неподходящее значение возникнет ошибка.