Inspectopedia 2026.1 Help

Inner class may be 'static'

Reports inner classes that can be made static.

On Java 17 and older non-static inner classes contain an implicit reference to their enclosing instance. Static nested classes do not have such a reference. Therefore, making an inner class static prevents a common cause of memory leaks and uses slightly less memory per instance of the class.

The implicit reference was removed for non-Serializable inner classes in Java 18.

Example:

public class Outer { class Inner { // not static public void foo() { bar("x"); } private void bar(String string) {} } }
public class Outer { static class Inner { public void foo() { bar("x"); } private void bar(String string) {} } }

Locating this inspection

By ID

Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.

InnerClassMayBeStatic
Via Settings dialog

Path to the inspection settings via IntelliJ Platform IDE Settings dialog, when you need to adjust inspection settings directly from your IDE.

Settings or Preferences | Editor | Inspections | Java | Memory

Inspection ID: InnerClassMayBeStatic

Inspection options

Here you can find the description of settings available for the Inner class may be 'static' inspection, and the reference of their default values.

Ignore if annotated by

Option ID:

ignorableAnnotations

Default value:

[org.junit.jupiter.api.Nested]

Suppressing Inspection

You can suppress this inspection by placing the following comment marker before the code fragment where you no longer want messages from this inspection to appear:

//noinspection InnerClassMayBeStatic

More detailed instructions as well as other ways and options that you have can be found in the product documentation:

Inspection Details

By default bundled with:

IntelliJ IDEA 2026.1, Qodana for JVM 2026.1,

Last modified: 31 March 2026