Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: removed the line "The JLS permits implementations to ignore the possibility of such recursive initialization cycles [Bloch 2005]." i could not find this in the JLS and also the reference to Bloch is nonexistent but should be the Puzzlers.

...

The programmer's intent is to calculate the account balance by subtracting the processing fee from the deposited amount. However, the initialization of the c class variable happens before the deposit field is initialized because it appears lexically before the initialization of the deposit field. Consequently, the value of deposit seen by the constructor, when invoked during the static initialization of c, is the initial value of deposit (0) rather than the random value. As a result, the balance is always computed to be -10.

The JLS permits implementations to ignore the possibility of such recursive initialization cycles [Bloch 2005].

Compliant Solution (Intra-class Cycle)

...