Czy można utworzyć obiekt typu określonego przez typ generyczny?
Czy można utworzyć obiekt typu określonego przez typ generyczny?
Pytanie oznacza, czy da się skompilować i wykonać poniższy kod klasy generycznej:
public class MyClass<T> { private final T object; public MyClass() { this.object = new T(); // błąd kompilacji } }
Próba zakończy się błędem kompilacji... Można to zachowanie wyjaśnić, dzięki mechanizmowi wymazywania typów (type erasure). Na etapie kompilacji gubiona jest informacja o typach generycznych - tym samym nie wiadomo, konstruktor jakiej klasy należy wywołać. Ta informacja będzie dostępna dopiero w momencie użycia klasy.