Maverik Maverik - 3 months ago 6
Java Question

Why getClass returns the name of the class + $1 (or $*)

I'm writing a piece of code in which I have to cast an Object if it is an instance of a certain class.

As usual I'm using

for checking the compatibility.

The problem is that the check is never satisfied because the objects belong to "strange" classes.

For example; when I call the method
on this object it return me the name of the class +
instead of

What does this
Is there a solution or a workaround?


That shows an inner class (either anonymous (if it has a number) or named). For example:

class Foo {
    static class Bar {

The name of class Foo.Bar is Foo$Bar. Now if we had:

class Foo {

    static void bar() {
        Runnable r = new Runnable() {
            public void run() {};


That will print Foo$1.

You can see the same effect in the naming of the class files created by javac.