Декларация такая:
class A<X extends Number & List> { }
разрешено. В то время как подобное объявление не допускается.
class A<? extends Number & List> { }
Есть ли какое-то логическое объяснение тому, почему Java ограничивает нас в этом?
И в чем реальная разница между
<T extends Number>
& <? extends Number>?
Number
и реализуетList
? Или он расширяетNumber
и реализуетList<Number>
? или X расширяетNumber
и реализуетList<X>
? Как бы вы вообще написали этот последний, не объявив где-нибудь типX
? - person Paul Hanbury   schedule 28.03.2012Number
иList
на самом деле не те типы, которые вы ожидаете сосуществовать таким образом. - person Louis Wasserman   schedule 28.03.2012public class Math {public static int multiply(int x,int y){int p = 0;for(int i=0;i<x;i++) for(int j=0;j<y;j++)p++;return p;}}
Меня это не устраивает. Точно так же я не думаю, что использование необработанных списков также является хорошей идеей... особенно в шаблонном классе. - person Paul Hanbury   schedule 19.04.2012