Правильный термин захват шаблона. Компилятор внутренне преобразует копию шаблона общего типа в захват подстановочного знака. Захват представляет собой конкретный неизвестный тип аргумента типа. Этот конкретный неизвестный тип, конечно, является членом семейства типов, обозначаемым подстановочным знаком.
Обратите внимание, что, поскольку может быть много разных типов, которые могут быть представлены с помощью подстановочных символов, мы говорим, что подстановочные знаки представляют собой семейство различных экземпляров параметризованных типов.
Могу ли я определить неявный тип вручную?
Анонимный тип переменной? Нет. Это создается компилятором внутри. Вы можете сказать, что вы поручаете компилятору создать анонимный аргумент типа, который заменит используемые подстановочные знаки.
Верно ли, что все неявные типы одинаковы?
No.Если вы используете, скажем, List<? extends Number>
дважды в разных типах, они оба будут генерировать разные анонимные типы, а именно: CAP#1 extends Number
и CAP#2 extends Number
.
Что такое неявный тип для компилятора?
Я не понимаю этих вопросов.
Верно ли, что компилятор знает, что только null
является экземпляром этого неявного типа?
Причина добавления null
работы обусловлена тем, что, null
является допустимым значением для любого вида ссылки. Итак, каков бы ни был фактический аргумент типа, представленный подстановочным знаком, с радостью примет значение null
.
_I не понимаю эти вопросы. Я думал, что мы можем определить неявный тип в коде. Вы сказали, что неявный тип создается компилятором внутри себя. Следовательно, эти вопросы - это бессмысленность. –
_ Аргумент анонимного типа? _ Можете ли вы опубликовать ссылку на официальные документы об анонимном аргументе? –
@ St.Antario Это не в официальном документе. Этот термин используется для захвата подстановочных знаков в этом учебном пособии - http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#FAQ501 –