Проще, лучше:
img {
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto auto;
position: absolute;
}
Затем вам нужно вставить свой тег img в тег, который имеет спортивную позицию: относительное свойство, следующим образом:
<div style="width:256px; height: 256px; position:relative;">
<img src="photo.jpg"/>
</div>
Как упоминалось выше janoh.janoh, varargs в Java - это просто синтаксический сахар для массивов плюс неявное создание массива на вызывающем сайте. Таким образом,
List<List<String>> combinations =
Utils.createCombinations(cocNumbers, vatNumbers, ibans);
на самом деле
List<List<String>> combinations =
Utils.createCombinations(new List<String>[]{cocNumbers, vatNumbers, ibans});
Но, как вы знаете, new List<String>[]
не разрешено в Java по причинам, которые были освещены во многих других вопросах, но в основном связаны с тем, что массивы знают свой тип компонента во время выполнения и проверяют во время выполнения, добавляются ли элементы в соответствие с его типом компонента, но эта проверка невозможна для параметризованных типов.
Во всяком случае, вместо отказа , компилятор все еще создает массив. Он делает что-то похожее на это:
List<List<String>> combinations =
Utils.createCombinations((List<String>[])new List<?>[]{cocNumbers, vatNumbers, ibans});
Это потенциально опасно, но не обязательно небезопасно. Большинство методов varargs просто перебирают элементы varargs и читают их. В этом случае он не заботится о типе времени выполнения массива. Это относится к вашему методу. Поскольку вы находитесь на Java 7, вы должны добавить аннотацию @SafeVarargs
к вашему методу, и вы больше не получите это предупреждение. В этой аннотации в основном говорится, что этот метод заботится только о типах элементов, а не о типе массива.
Однако существуют некоторые методы varargs, которые используют тип среды выполнения массива. В этом случае это потенциально опасно. Вот почему предупреждение есть.
Поскольку java-компилятор использует неявное создание массива для varargs, а java не позволяет создавать общий массив (поскольку аргумент типа не может быть повторно идентифицирован).
Правильный код (эти операции разрешены с массивами), поэтому необходимо непроверенное предупреждение:
public static <T> List<List<T>> createCombinations(List<T> ... lists) {
((Object[]) lists)[0] = new ArrayList<Integer>();
// place your code here
}
См. подробное объяснение здесь
Как насчет подавления предупреждения?
@SuppressWarnings("unchecked")
@SafeVarargs
имеет пример метода, который небезопасен docs.oracle.com/javase/7/docs/api /java/lang/SafeVarargs.html – michiakig 28 May 2015 в 14:46@SafeVarargs
может использоваться, когда ваш метод потребляет только , элементы массива и не (и никогда не будут) создавать элементы для размещения в массиве? Особая осторожность должна быть предпринята, если вы назначаете аргумент массива полю, к которому могут быть применены другие методы, поскольку определение того, что на нем не выполняются небезопасные операции, может быть не тривиальным. – neXus 10 November 2017 в 15:29