well like Paul said, im not sure "too" what you mean by a temp object.. but i'm trying to answer your question..
Number is an abstract class and we are only able to create reference of an abstract class not an object. But then how a temp Number object is created and returned
"of course" number is an abstract class, thus we're not able to create a "Number" object, but then how a temp Number object is "created" and "returned"?
well actually there's no "Number" object created on your code..
so the object always "Double" which is subclass of the Number class (so it was meet the requirement of the Generic type that you declare -> <Double extends Number>) ..
then what about the getter?
the method never create any "Number" object, but the method was "declared" to return any of "Number" object -> then.. the return statement was a "Double" object (and i'm not sure the doubleValue() was necessary).. then why compiler let the Double object was returned? but AHA we should remember that Double "IS-A" Number right? since the Double is a subclass of Number..
hope this help.. cheers