静的型のチェックの「完全さ」が本当なら、このコンパイルが通る理由が分からん

import java.util.*;

class Hoge {
 public static void main (String[] args) {
  Collection<Number> nums = new ArrayList<Number>();
  nums.add(new Integer(1));
  nums.add(new Long(1));
  Integer[] ints = nums.toArray(new Integer[nums.size()]);
  for (Integer integer : ints) {
   System.out.println(integer);
  }
 }
}