Anonymous class may be a named 'static' inner class
Reports anonymous classes that may be safely replaced with static
inner classes. An anonymous class may be a static
inner class if it doesn't explicitly reference its enclosing instance or local classes from its surrounding method.
A static
inner class does not keep an implicit reference to its enclosing instance. This prevents a common cause of memory leaks and uses less memory per class instance.
Since Java 18, only serializable anonymous classes keep an implicit reference to its enclosing instance, if this reference is not used. So, if module language level is Java 18 or higher, this inspection reports serializable classes only.
The quick-fix extracts the anonymous class into a named static
inner class.
Example:
After the quick-fix is applied:
Inspection Details | |
---|---|
Available in: | IntelliJ IDEA 2023.3, Qodana for JVM 2023.3 |
Plugin: | Java, 233.SNAPSHOT |