Le classi anonime nel codice sono due, sono quei new FiltroFilm() { .... } riportati qui sopra.
Una classe anonima è una classe in cui la definizione e la istanziazione praticamente coincidono, sono cioè nello stesso punto. E il termine "anonima" riguarda il fatto che la classe non ha un nome nel sorgente. Nel bytecode generato un nome ovviamente ce l'ha ma è generato dal compilatore e non è noto a priori dal programmatore (in realtà si sa come il compilatore, perlomeno quello Sun/Oracle, genera questi nomi).
Una classe anonima può fare solo una di queste cose: estendere una classe oppure implementare una (1) interfaccia. Mai entrambe le cose.
Potrei andare avanti a spiegare ma dovrei dirne parecchie di cose ..... piuttosto, quali sono precisamente i tuoi dubbi?