]> source.dussan.org Git - sonarqube.git/blob
9c4fa70e7f7ecba7fca8386c6f18e81ce3746cec
[sonarqube.git] /
1 <p>This method is invoked in the constructor of of the superclass. At this point, the fields of the class have not yet initialized. To make this more concrete, consider the following classes:</p>
2 <pre>
3   abstract class A {
4     int hashCode;
5     abstract Object getValue();
6     A() {
7       hashCode = getValue().hashCode();
8     }
9   }
10   class B extends A {
11     Object value;
12     B(Object v) {
13       this.value = v;
14     }
15     Object getValue() {
16       return value;
17     }
18   }
19 </pre>
20 <p>When a B is constructed, the constructor for the A class is invoked before the constructor for B sets value. Thus, when the constructor for A invokes getValue, an uninitialized value is read for value.</p>