While working with the idea of overriding and overridden methods in Java I have noticed that there is some flexiblity given for the return types of such methods.
Her
You can only return same type or a sub-class of the parent's return type and its known as Co-Variant return types.
The compiler lets you auto-box and unbox between primitives and wrappers but this doesn't make one a sub-class of the other. Primitives are not classes and cannot be used in the way you have.