Java has much fewer gotchas compared to C++ but sometimes I do come across surprises.
A code like following will fail to compile since you are trying to initialize a variable with an uninitialized variable.

But if instead of directly referencing mField1, you reference indirectly via a getter method code will compile and mField2 will get “null” value for mField1.