Por que essa excessão acontece?

Olá pessoal, tudo bem?

Não entendi por que a excessão abaixo acontece se estou usando todos os cast.

public static List<int[]> listarTodosResultados() {
		EntityManagerFactory emf = Persistence.createEntityManagerFactory("AraraAzul");
		EntityManager em = emf.createEntityManager();
		em.getTransaction().begin();

		Query query = em.createQuery("select s.b1,s.b2,s.b3,s.b4,s.b5,s.b6,s.b7,s.b8,s.b9,s.b10 from Matriz s");
		List<int[]> result = (List<int[]>) query.getResultList();
		return result;
	}

//Uso do método
	public void somar(List<int[]> lista) {

		for (int[] i : (List<int[]>) lista) {
			for (int h = 0; h < i.length; h++) {
				System.out.print(i[h] + ", ");
			}
			System.out.println();
		}
}

Quando chamo o método somar() a ocorre a excessão abaixo:

Exception in thread “main” java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [I

Galera,

Resolvi meu problema com a seguinte estratégia.

for (Object[] i : list) {
				for (int h = 0; h < i.length; h++) {
					int b = (Integer) i[h];
                                        System.out.print(b);
				}
			}

Agora eu só não entendi por que não é possível fazer um cast do tipo Object para um tipo genérico.
Alguém sabe me falar o motivo?

Grato.