Одно из основных применений анонимных классов в завершении класса, которое называется guardizer . В Java-мире использование методов finalize следует избегать, пока вы им не понадобятся. Вы должны помнить, что когда вы переопределяете метод finalize для подклассов, вы всегда должны вызывать super.finalize()
, потому что метод finalize суперкласса не будет вызываться автоматически, и у вас могут возникнуть проблемы с утечками памяти.
, поэтому, учитывая упомянутый выше факт, вы можете просто использовать анонимные классы, например:
public class HeavyClass{
private final Object finalizerGuardian = new Object() {
@Override
protected void finalize() throws Throwable{
//Finalize outer HeavyClass object
}
};
}
Используя эту технику, вы освободили себя и своих других разработчиков от вызова super.finalize()
для каждого подкласса из HeavyClass
, который нуждается в методе окончательной доработки.