Единственное, о чем я могу думать, это сделать бокс явным, хотя эквивалентный автоматически упакованный код фактически скомпилирован в Long.valueOf (SOME_CONSTANT), который может кэшировать небольшие значения: (из jvm src)
public static Long valueOf(long l) {
final int offset = 128;
if (l >= -128 && l <= 127) { // will cache
return LongCache.cache[(int)l + offset];
}
return new Long(l);
}
. Ничего страшного, но мне не нравится видеть код, который постоянно упаковывает и распаковывает, не обращая внимания на тип, что может привести к небрежности.
Функционально, однако, я не вижу разницы так или иначе. Новый long будет по-прежнему вычисляться как равный, а хэш-код будет равен автоматически упакованному, поэтому я не вижу, как вы могли бы даже сделать функциональное различие, если бы захотели.