Мой ответ похож на другой, но, надеюсь, более ясен.
List<List<?>> is a list of (lists of anything).
List<List<String>> is a list of (lists of strings).
Последнее не может быть преобразовано в первое, потому что это позволит вам добавить список & lt; Number & gt; в ваш список & lt; List & lt; String & gt; & gt ;, который будет явно нарушен.
Обратите внимание, что правила для этого не изменяются, если вы заменяете List некоторым типом, который не имеет .add. Для Java понадобится ковариация сайта-адресата и / или контравариантность (например, C # IEnumerable & lt; out T & gt; или Scala's List [+ A]). Java имеет только ковариацию и контравариантность сайта (? Расширяет X,? Супер X).
Это правда, они оба - или, точнее, они являются элементами «встроенного блока». Это означает, что они располагаются внутри строки, как текст, но также имеют ширину и высоту, как блочные элементы.
В CSS вы можете установить элемент на display: inline-block
, чтобы он воспроизводил поведение изображений *.
Изображения и объекты также известны как «замещенные» элементы, поскольку они не имеют содержания как такового, элемент по существу заменяется двоичными данными.
* Обратите внимание, что браузеры технически используют display: inline
(как видно в инструментах разработчика), но они уделяют изображениям особую обработку. Они по-прежнему следуют всем чертам inline-block
.
Элемент img
является замененным inline-элементом
.
Он ведет себя как инлайн-элемент (потому что он им является), но некоторые обобщения о инлайн-элементах не применимы к элементам img.
например,
Обобщение: "Ширина не применяется к инлайн-элементам"
Что на самом деле сказано в спецификации: "Применяется ко всем элементам, кроме незамещенных инлайн-элементов, строк таблицы и групп строк"
Поскольку изображение является заменяемым инлайн-элементом, оно применяется.
Практически для всех целей воспринимайте их как встроенные элементы с установленной шириной. По сути, вы можете диктовать, как вы хотите, чтобы изображения отображались с помощью CSS. Обычно я устанавливаю несколько классов изображений следующим образом:
img.center {display:block;margin:0 auto;}
img.left {float:left;margin-right:10px;}
img.right {float:right;margin-left:10px;}
img.border {border:1px solid #333;}
Элементы IMG являются встроенными, что означает, что если они не плавающие, то они обтекают текст и другие встроенные элементы по горизонтали.
Они являются "блочными" элементами, поскольку имеют ширину и высоту. Но в этом отношении они ведут себя скорее как "inline-block".