Преобразования, разрешенные при вызове метода, определены в главе 5 JLS. Неявные примитивные преобразования должны иметь расширение , то есть не приводить к потере величины (хотя в случае long to double, может привести к потере точности.) Каждый вид контекста имеет разные правила для набора полигональных выражений и допускает преобразования в некоторых из вышеперечисленных категорий, но не в других. Контексты следующие:
...
Строгие контексты вызова (§5.3, §15.9, §15.12), в которых аргумент привязан к формальному параметру конструктора или метода. Могут происходить расширяющиеся примитивные, расширяющиеся ссылки и неконтролируемые преобразования.
Свободные контексты вызова (§5.3, §15.9, §15.12), в которых, как и строгие контексты вызова, аргумент привязан к формальному параметру. Вызов метода или конструктора может предоставить этот контекст, если не может быть найдено применимое объявление с использованием только строгих контекстов вызова. В дополнение к расширяющим и непроверенным преобразованиям, этот контекст позволяет выполнять преобразования упаковки и распаковки.
JLS 11 Глава 5
Преобразование от long к int - это сужение примитивное преобразование, так как это может привести к потере информации о величине. Таким образом, он не вызывается, если вы сначала явно не приведете к (int)
.