If I have an interface interface Example{}
ArrayList<Example> ExampleArrayList = new ArrayList<Example>();
Is possible
List<Example> ExampleList = new List<Example>();
Is not possible
List<Example> ExampleCast = new ArrayList<Example>();
Is possible
Why is that?
Also, I have noticed that if I do a generic for instance like
class genericExample<T extends Example>
It is also valid but I'm not sure if this compiles properly