Java の配列の型安全性の穴

public class Subarray
{
    public static void main(String[] args)
    {
Integer[] i = new Integer[1];
// i[0] = new String(""); はもちろん通らないけれども、
// 安全なはずの「上位型へのキャスト」を使うと ...
( (Object[])i )[0] = new String("");
    }
}

flatline's Wiki for memo - JavaのGenerics
A <: B は、「AはBのsubtype」と読む。 IBM dW : Java technology : Javaの理論と実践: Generics、了解! - Japan