Long foo = 4;
означает: назначить int
значения 4 к объекту класса Long
. Он будет пытаться использовать autoboxing для этого и терпеть неудачу, потому что autoboxing применим только для соответствующего примитива. Он может быть закреплен двумя способами:
Long foo = (long) 4;
Long foo = 4L;
в первом случае вы кастовал int
4 до long
4. Во-вторых, вы обеспечиваете долго.
Чтобы ответить на вопрос, Java не поддерживает автоматическое литье и очень Строгий ввод, что, вероятно, поэтому не поддерживает его автоматически.
Хороший вопрос. Интересно, может ли это вызвать некоторые двусмысленности. (+1) – NPE
Технически, 'Long foo = 4' не может быть оценен во время компиляции. –
Вы смешиваете конверсию с autoboxing. – Bevor