Why Does Java Not Allow Generic Arrays