¿No puede emitir conjuntos genéricos?

Me encontré con un problema interesante hoy. Considere el siguiente código

public static class Parent {}
public static class Child extends Parent {}

Set<Child> childs = new HashSet();
Set<Parent> parents = (Set<Parent>)childs; //Error: inconvertible types

Parent parent = (Parent)new Child(); //works?!

¿Por qué no funcionaría un elenco así? Esperaría que un elenco implícito no funcionara debido a las diversas reglas de los genéricos, pero ¿por qué no puede funcionar un elenco explícito?

Respuestas a la pregunta(4)

Su respuesta a la pregunta