import java.lang.reflect.*; class Example { private void demo() { TypeVariable>[] typeParameters = getClass().getTypeParameters(); Object typeParameters1 = (TypeVariable>[]) getClass().getTypeParameters(); } @Override public boolean equals(Object obj) { return getClass() == obj.getClass(); } } class Foo { public static Class> fFoo(final Foo foo) { Class> fooClass = foo.getClass(); fooClass = foo.getClass(); return foo.getClass(); } public static Class> fFoo1(final Foo foo) { Class> fooClass = foo.getClass(); fooClass = foo.getClass(); return foo.getClass(); } }