Forums Register Login

What are bridge methods in Java?

+Pie Number of slices to send: Send
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.
+Pie Number of slices to send: Send
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...
+Pie Number of slices to send: Send
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.
+Pie Number of slices to send: Send
Ankit is corect, this is not on the exam, so let's move this discussion...
"Don't believe every tiny ad you see on the internet. But this one is rock solid." - George Washington
a bit of art, as a gift, that will fit in a stocking
https://gardener-gift.com


reply
reply
This thread has been viewed 12197 times.
Similar Threads
generics
Generics
Generics
Generics
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 29, 2024 07:44:32.