In some of my projects and in some books was said to not use inner class (anonymous or not, static or not) - except in some restricted conditions, like
One item that is not mentioned here is that a (non-static) inner class carries a reference to it's enclosing class. More importantly, the inner class has access to private members of it's enclosing class. It could, potentially, break encapsulation.