Я понимаю общий и кастинг, но я не понимаю общий кастинг. Я думал, что могу использовать только определенный тип вверх или вниз по дереву наследования, но это оказалось мне неправильным:
ArrayList<?> cislo = (ArrayList<? extends Number>) new ArrayList<Integer>();
Это может быть не лучший пример, но, надеюсь, вы получите мое мнение. Как это работает? К какому типу его получить?