class B extends the class A with parameterized type String, and overrides the method getOb();
B has two methods, one of them is synthetic bridge method.
Joined: Feb 28, 2007
We have overridden the getOb() method of the class A, that class B inherits from A<String>. What complier does is quite different; class A's getOb() type will be Object and class B parameter type is String; To handle with this covariant return compiler adds a bridge method with Object return type in the class B.
The effect of the bridge method is to convert any calls to the inherited versions of getOb() to a call to your version, thus override of the base class method effective.