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
/* ... */
}
}