This week's book giveaway is in the OCPJP forum.
We're giving away four copies of OCA/OCP Java SE 7 Programmer I & II Study Guide and have Kathy Sierra & Bert Bates on-line!
See this thread for details.
The moose likes Java in General and the fly likes What are bridge methods in Java? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCA/OCP Java SE 7 Programmer I & II Study Guide this week in the OCPJP forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "What are bridge methods in Java?" Watch "What are bridge methods in Java?" New topic
Author

What are bridge methods in Java?

Himanshu Gupta
Ranch Hand

Joined: Aug 18, 2008
Posts: 598

I got this question from javaBlackBelt.

Which of the following statements are true about bridge methods in Java 5?

They are synthetic
They are generated by the compiler
They are not necessary if the code does not use generics
The compiler rejects code that directly calls a bridge method
It is possible to call a bridge method using reflection



Explanation
Bridge methods are inserted by the compiler to ensure correct overriding. They are sometimes necessary when overriding generic types and they are necessary for covariant method return types. So bridge methods are not limited to code using generics. A bridge method is synthetic and cannot be called directly but it can be called using reflection. Of course they should not be called and doing so may result in error, e.g. a ClassCastException, when calling a bridge method with wrong parameter types.


My Blog SCJP 5 SCWCD 5
Ankit Garg
Sheriff

Joined: Aug 03, 2008
Posts: 9307
    
  17

Well this is a deep topic and I don't think that it is a part of SCJP.

But to explain, let's take an example of covarient return types.



Now you must say that method() in Derived overrides method() in Base. But this is not the case. Actually return types are also part of method signature for JVM. So for JVM these two methods are overloaded. To solve this problem, compiler adds a bridge method in Derived class which calls the covarient overloaded method. I don't remember how that method is implemented by compiler...


SCJP 6 | SCWCD 5 | Javaranch SCJP FAQ | SCWCD Links
Himanshu Gupta
Ranch Hand

Joined: Aug 18, 2008
Posts: 598

Can i get some more links as I searched but was not able to find some good articles.

If there is someone who knows it better can explain here for us.

Thanks in advance.
Bert Bates
author
Sheriff

Joined: Oct 14, 2002
Posts: 8875
    
    5
Ankit is corect, this is not on the exam, so let's move this discussion...


Spot false dilemmas now, ask me how!
(If you're not on the edge, you're taking up too much room.)
 
Don't get me started about those stupid light bulbs.
 
subject: What are bridge methods in Java?