Inspectopedia Help

Integer multiplication or shift implicitly cast to 'long'

Reports integer multiplications and left shifts that are implicitly cast to long.

Example:

void f(int i) { long val = 65536 * i; }

After the quick-fix is applied, the code changes to:

void x(int i) { long val = 65536L * i; }

Example:

void f(int i) { long value = i << 24; }

After the quick-fix is applied, the code changes to:

void f(int i) { long value = (long) i << 24; }

Such multiplications are often a mistake, as overflow truncation may occur unexpectedly. Converting an int literal to a long literal (65536L) fixes the problem.

Inspection options

Option

Type

Default

Ignore expressions where it's proven statically that overflow is impossible

Checkbox

true

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023