making finalize protected looks good in terms
of following rule of encapsulation which starts with least restrictive access
modifier like private but making finalize private prevents it from being
overridden in subclass as you can not override private methods, so making it
protected is next obvious choice.
2) One of the most important points of finalize
method is that it's not automatically chained like constructors. If you are
overriding finalize method then it's your responsibility to call finalize()
method of the superclass, if you forgot to call then finalize of super class
will never be called.
3) finalize method is called by garbage
collection thread before collecting object and if not intended to be called
like a normal method.
4) finalize gets called only once by GC thread
if object revives itself from finalize method than finalize will not be called
again.
5) Any Exception is thrown by finalize method
is ignored by GC thread and it will not be propagated further, in fact, I doubt
if you find any trace of it.
No comments:
Post a Comment