tgoop.com/topJavaQuizExplain/304
Last Update:
What will be the output of the code?
❌ A. Max Integer: 4 Max Double: 3.3
❌ B. Max Integer: 2 Max Double: 2.2
❌ C. Max Integer: 1 Max Double: 1.1
✅ D. Compilation error
❌ E. Runtime error
Explanation:
1. Method Overloading with Generics:
• There are two overloaded findMax methods, one using extends Number and the other using extends Comparable<T>.
• findMax(List<T extends Number>): Compares Number values using doubleValue() for comparison.
• findMax(List<T extends Comparable<T>>): Compares values using the compareTo method, which is available for all classes implementing Comparable.
2. Type Inference and Ambiguity:
• When the findMax method is called with List<Integer> or List<Double>, Java tries to infer which method to use.
• Both Integer and Double implement Comparable<T>, so both methods are applicable.
• This results in a method ambiguity error because Java cannot decide whether to use doubleValue() or compareTo() to compare the elements.
3. Compilation Error:
• The ambiguity occurs because the Comparable interface is implemented by both Integer and Double, which causes the compiler to be unable to choose between the two overloaded methods.
Correct answer: D
BY Explanations “Top Java Quiz Questions”
Share with your friend now:
tgoop.com/topJavaQuizExplain/304