If you want to use the name of a class in your code, then you don't want it to be anonymous, right? Doesn't make sense to create a class with no name, and then work hard at figuring out its name. Just create a named inner class. You know you can create a class right inside a method, yes?
In your example, you don't even need to cast to call doSomething. That's the whole point of polymorphism.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Ernest Friedman-Hill: If you want to use the name of a class in your code, then you don't want it to be anonymous, right?
Very much so. In fact, you can't expect the name to stay the same. While today it might be mypackage.MyClass$2, it can change into mypackage.MyClass$3 quite easily if you add another anonymous class to your main class.