When overriding a method of a superclass, Java allows the return type to be covariant.
Why are contravariant parameter types in contrast not allowed when overriding methods?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Because that’s called overloading.
In particular, the return type type can be covariant because it is not considered when overloading, and it therefore still matches the superclass or interface’s implementation. Parameters are considered when overloading. You very well might have an optimization with
Number doSomethingWithNumber(Integer value)compared toNumber doSomethingWithNumber(Number value).