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 instanceof
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 getClass().getSimpleName()
on this object it return me the name of the class + $*
(e.g. ViewPart$1
instead of ViewPart
).
What does this $*
means?
Is there a solution or a workaround?
The Java Object getClass() method returns the class name of the object.
The $1 are anonymous inner classes you defined in your WelcomeApplet. java file. e.g. compiling public class Run { public static void main(String[] args) { System.out.println(new Object() { public String toString() { return "77"; } }); } private class innerNamed { } }
getClass() method returns the runtime class of an object. That Class object is the object that is locked by static synchronized methods of the represented class.
Java Class getName() Method The getName() method of java Class class is used to get the name of the entity, and that entity can be class, interface, array, enum, method, etc. of the class object. Element Type.
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() {};
};
System.out.println(r.getClass());
}
}
That will print Foo$1
.
You can see the same effect in the naming of the class files created by javac.
These are instances of an anonymous class. ViewPart$1
is the first anonymous class defined inside ViewPart
- but that doesn't mean it's a subclass of ViewPart
. It's most likely an anoymous implementation of some Listener interface.
$ denotes for inner class. For example consider two classes
public class TopClass {
class SubClass {
// some methods
}// inner class end
} // outer class end
If you compile this code you will get two class files TopClass.class and TopClass$SubClass.class.
Check your ViewPart class whether it has any inner classes. Hope it helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With