Подстановочный знак с окончательной верхней границей

Class<? extends Integer>компилируется нормально, но Integerявляется окончательным типом, поэтому нет смысла использовать его в качестве верхней границы (ничего никогда не будет extendего ).

Если вы попытаетесь использовать окончательный тип в качестве верхней границы для параметра типа, вы получите предупреждение компилятора :

The type parameter T should not be bounded by the final type Integer. Final types cannot be further extended

. Почему использование окончательного типа в качестве верхней границы для подстановочного знака было бы совершенно нормально, но выдавало бы предупреждение для параметра типа? Почему Java даже позволяет ограничивать подстановочные знаки конечным верхним типом?

8
задан Jeffrey 11 August 2012 в 21:17
поделиться