package com.google.checkstyle.test.chapter6programpractice.rule64finalizers; class NormalFinalizer { public static void doStuff() { // This method do some stuff } protected void finalize() throws Throwable { //warn try { doStuff(); } finally { super.finalize(); } } } // negates effect of superclass finalizer class EmptyFinalizer { protected void finalize() throws Throwable { //warn // empty finalize () } } // fails to call superclass finalize method class WithoutTryCatchFinalizer { public static void doStuff() { // This method do some stuff } protected void finalize() throws Throwable { //warn doStuff(); } } // public finalizer class PublicFinalizer { public static void doStuff() { // This method do some stuff } public void finalize() throws Throwable { //warn try { doStuff(); } finally { super.finalize(); } } } // unless (or worse) finalizer class SuperFinalizer { protected void finalize() throws Throwable { //warn super.finalize(); } } // public finalizer class StaticFinalizer { public static void doStuff() { // This method do some stuff } protected void finalize() { //warn try { doStuff(); } finally { } } class InnerFinalizer { protected void finalize() { //warn try { doStuff(); } finally { } } } } class WithoutFinalize { public void doStuff() { // This method do some stuff } public void finalizeMe() { // This method do some stuff } public void doFinalize() { // This method do some stuff } } class WithoutMethods {} class WithAnonymousClass { public static void doStuff() { // This method do some stuff } public void foo() { Ball b = new Ball() { public void hit() { System.identityHashCode("You hit it!"); } protected void finalize() { //warn try { doStuff(); } finally { } } }; b.hit(); } interface Ball { void hit(); } } interface WithFinalizer { void finalize(); //warn }