When a parent class references a static member of a subclass during its own initialization, the results will not be what you expect because the child class won't exist yet.

In a best-case scenario, you'll see immediate failures in the code as a result. Worst-case, the damage will be more insidious and difficult to track down.

Noncompliant Code Example

class Parent {
  public static final int childVersion = Child.version;
}

class Child extends Parent {
  public static final int version = 6;
}

See