Нет, это невозможно. Использование e
или E
в числовом литерале c (т. Е. scientifi c нотация ) не допускается Спецификацией языка Java для целочисленных литералов :
IntegerLiteral:
DecimalIntegerLiteral
HexIntegerLiteral
OctalIntegerLiteral
BinaryIntegerLiteral
DecimalIntegerLiteral:
DecimalNumeral [IntegerTypeSuffix]
...
IntegerTypeSuffix:
(one of)
l L
Допускается для литералов с плавающей точкой , но они не могут иметь суффикс l
или L
:
FloatingPointLiteral:
DecimalFloatingPointLiteral
HexadecimalFloatingPointLiteral
DecimalFloatingPointLiteral:
Digits . [Digits] [ExponentPart] [FloatTypeSuffix]
. Digits [ExponentPart] [FloatTypeSuffix]
Digits ExponentPart [FloatTypeSuffix]
Digits [ExponentPart] FloatTypeSuffix
ExponentPart:
ExponentIndicator SignedInteger
ExponentIndicator:
(one of)
e E
...
Итак, Вы должны либо разыграть с double
, либо полностью выписать свой long
литерал. Однако для удобства вы можете использовать подчеркивания для группировки цифр, например, 1_000_000_000_000L
, чтобы сделать число нулей понятным.