methods - Class Name for Java anonymous class -
this question has answer here:
class a{ public void test(){ b b = new b(); system.out.println( "class name: " + b.createclassc().getclass() ); } } class b{ public c createclassc(){ c c = new c(){ @override public boolean equals( object other ){ return true; } }; } } class c{ int val = 8; }
output: class name: package.name.here.b
can 1 tell me why anonymous class types gives enclosing class in getclass() method? causes .equals() on object c fail time. understanding since getclass gives enclosing class name, overridden equals never invoked?
output class name: class nz.test.anon.b$1
dollar sign important. b$1 means first anonymous class under b. b$2 second , on.
also equals method being called
system.out.println( "this true: " + b.createclassc().equals(b) ); system.out.println( "and this: " + b.createclassc().equals(this) );
Comments
Post a Comment