Насколько я понимаю, оценка переменной выполняется во время выполнения. Однако оценка типов выполняется во время компиляции в Java.
Также, как я вижу, создание постоянной переменной (я использую локальные переменные, но она ничего не меняет в концепции выше), сделает ее значение известным во время компиляции.
Я приведу два примера для проверки этой концепции. Первый работает, а второй нет.
Может ли кто-нибудь объяснить мне, почему присвоение переменной постоянной позволяет мне назначать короткую переменную для переменной int, тогда как я не могу назначить переменную int для длинной?
// Working example
final int x = 10;
short y = x;
// Non-working example
final long a = 10L;
int b = a;