Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Returning this from a nonprivate (possibly final) method invoked from the constructor of an object under construction
  • Passing this as an argument to an alien method invoked from the constructor of an object under construction
  • Publishing this using public static variables from the constructor of an object under construction
  • Publishing this such that pieces of code beyond its current scope can obtain its reference
  • Calling a non-final method from a constructor (MET04-J. Ensure that constructors do not call overridable methods)
  • Overriding the finalizer of a non-final class and obtaining the this reference of a partially constructed initialized instance, when the construction of the object ceases (OBJ04-J. Do not allow partially initialized objects to be accessed)
  • Passing internal object state to an alien method and consequently, exposing the this reference of internal objects

...

This ensures that threads do not see a compromised Publisher instance. The num variable is also declared as final; consequently, the class is immutable. There is no threat of a caller invoking newInstance() to obtain a partially constructed initialized object because pu is not returned until the construction of the object is over.

...

Because the constructor is private, untrusted code cannot create instances of the class, prohibiting the this reference from escaping. Using a public static factory method to create new instances also protects against publication of partially constructed initialized objects (CON26-J. Do not publish partially initialized objects).

...