Scala

Scala

Made by DeepSource

finalizers should call super.finalize for super classes to run their own finalization logic SC-R1048

Bug risk
Major

It is generally recommended that you use interfaces such as AutoCloseable to perform clean-up related tasks. However, if you choose to explicitly define a finalizer, it should call super.finalize to let its super class run its own finalization logic when appropriate, i.e., when inheritance is involved.

Bad practice

class Child extends Parent {
  override def finalize(): Unit = {
    // clean up logic
  }
}

Recommended

class Child extends Parent {
  override def finalize(): Unit = {
    super.finalize()
    // clean up logic
  }
}