А чем анонимные классы тяжелые? В JVM 1.8+, там как бы кажется, что есть магическая мета-фабрика, но ведь под капотом все-равно класс есть (позовите getClass и вы его увидите). А хорошие современные runtime-ы и классы весьма хорошо оптимизируют, чтобы они были легковесными.