You are comparing Outer.Inner.class
with objTyp.getClass()
instead of objTyp
.
objTyp
is of typeClass<Outer.Inner>
.objTyp.getClass()
is of typeClass<Class<Outer.Inner>>
.Outer.Inner.class
is a class literal of typeClass<Outer.Inner>
.
Hence, objTyp.getClass()
has no chance to equal Outer.Inner.class
.
Outer outObj = new Outer();
Outer.Inner inObj = outObj.new Inner();
// Using Reflection
Class objTyp = inObj.getClass();
System.out.println(objTyp.getName());
// >>>>> objTyp is already inObj.getClass() <<<<<<
if(objTyp.getClass() == Outer.Inner.class){
System.out.println("Match classes!");
}else{
System.out.println("Mismatch classes!");
}