Inspectopedia Help

Constructor assigns value to field defined in superclass

Reports assignment to, or modification of fields that are declared in a superclass from within a subclass constructor.

It is considered preferable to initialize the fields of a superclass in its own constructor and delegate to that constructor in a subclass. This will also allow declaring a field final if it isn't changed after the construction.


class Super { int x; } class Sub extends Super { Sub(int _x) { // Warning: x is declared in a superclass x = _x; } }

To avoid the problem, declare a superclass constructor:

class Super { final int x; Super(int _x) { x = _x; } } class Sub extends Super { Sub(int _x) { super(_x); } }

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3


Java, 233.SNAPSHOT

Last modified: 13 July 2023