Ну, в Java переменная может быть окончательной не только как параметр, но как поле уровня класса, например
public class Test
{
public final int a = 3;
или как локальная переменная, например
public static void main(String[] args)
{
final int a = 3;
Если вы хотите получить доступ и изменить переменную из анонимного класса, вам может потребоваться сделать переменную переменной уровня класса в классе-оболочке.
public class Test
{
public int a;
public void doSomething()
{
Runnable runnable =
new Runnable()
{
public void run()
{
System.out.println(a);
a = a+1;
}
};
}
}
Вы не можете имеют переменную как окончательную и дают ей новое значение. final
означает именно это: значение неизменное и окончательное.
И поскольку он окончательный, Java может безопасно скопировать его в локальные анонимные классы. Вы не получаете ссылку в int (тем более, что вы не можете иметь ссылки на примитивы, такие как int в Java, просто ссылки на объекты).
Он просто копирует значение a в неявное int, называемое a в вашем анонимном классе.
Вы не можете. По умолчанию элементы inline-block
имеют ширину усадки :
Ширина усадки для соответствия:
blockquote>min(max(preferred minimum width, available width), preferred width)
.Затем,
- Когда
preferred minimum width <= preferred width <= available width
, ширина будетpreferred width
по вашему желанию.- Когда
available width <= preferred minimum width <= preferred width
, ширина будетpreferred minimum width
по вашему желанию.- Когда
preferred minimum width <= available width <= preferred width
, ширина будетavailable width
, даже если вам это не нравится.Если вы действительно этого не хотите, я думаю, вы могли бы добавить слушателя событий
resize
с JS и вручную установить желаемую ширину.
inline-block
не могут достичь этого макета - как продемонстрировано @Oriol, но
body {
margin: 0;
}
ul {
display: inline-grid;
grid-template-columns: repeat(auto-fit, 100px);
min-width: 50vw;
/* decorative properties */
grid-gap: 10px;
padding: 0;
list-style: none;
border: 5px solid salmon;
box-sizing: border-box;
/* center the grid */
position: relative;
left: 50vw;
transform: translateX(-50%);
}
li {
background-color: lightblue;
height: 100px;
}
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
<li>22</li>
</ul>
В основном соответствующий код сводится к следующему:
ul {
display: inline-grid; /* (1) */
grid-template-columns: repeat(auto-fit, 100px); /* 100px = column width - (2) */
min-width: 50vw; /* or any user-defined min-width (3) */
}
1) Сделайте контейнерный контейнер контейнером в виде сетки. Это заставит сетку «обрезать» содержимое, чтобы ширина сетки никогда не была более широкой, чем ее содержимое.
2) Установите сетку с адаптивной компоновкой (значение auto-fill
/ auto-fit
используется для гибких макетов). Если нет места в строке для соответствия следующему элементу - он переносится в следующую строку.
Когда адаптивный макет используется вместе с встроенной сеткой - ширина сетки будет равна ширине одной элемент сетки. (когда ширина ширины / min-ширина явно не установлена - , как это )
3) Установите контейнер с минимальной шириной, которая представляет (не более - один частичный элемент меньше, чем ) желаемая максимальная ширина для контейнера.
Итак, если заданная минимальная ширина точно вписывается в определенное количество элементов, это означает, что это также будет максимальная ширина сетки, потому что следующий элемент будет заворачивать.
Если, однако, минимальная ширина точно не соответствует ширине элементов 'n' тем, что она также входит в часть n + 1-го элемента - в этом случае сетка будет слегка расширяться до точности установите n + 1-й элемент - с переносом n + 2-го элемента в следующую строку.