The contract of the Object.finalize() method is clear: only the Garbage Collector is supposed to call this method.

Making this method public is misleading, because it implies that any caller can use it.

Noncompliant Code Example

public class MyClass {

  @Override
  public void finalize() {    // Noncompliant
    /* ... */
  }
}

See