Win a copy of Machine Learning Systems: Designs that scale this week in the Scala forum
or Xamarin in Action: Creating native cross-platform mobile apps in the Android forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

Why do I need a cast?  RSS feed

 
Greenhorn
Posts: 6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Don't understand why I should need a cast in this case?

Seems like the Calendar should be smart enough to know that it has a clone() method. I would have expected start.clone() to return an object of type Calendar, not of type Object.
 
Bartender
Posts: 6109
6
Android IntelliJ IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The clone() method is declared on Object to return type Object. Up until 1.5, there were no covariant return types, so if the parent class's method is declared to return type X, the child's method must also be declared to return type exactly type X.

Starting with 1.5, covariant return types allow the child method to declare a return of X or any subtype of X. Calendar's clone() method would therefore be allowed to declare a return type of any subtype of Object (with Calendar being the obvious choice), but apparently nobody bothered to go back in and change its declaration.
 
Marshal
Posts: 59124
180
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
. . . or it’s a case of “if it ain’t broke, don’t fix it.”
 
when your children are suffering from your punishment, tell your them it will help them write good poetry when they are older. Like this tiny ad:
Why should you try IntelliJ IDEA ?
https://coderanch.com/wiki/696337/IntelliJ-IDEA
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!