Строка необходима. В противном случае вы не сможете получить доступ к его данным и методам.
Java не позволяет вам делать compared.getYear()
или compared.year
, потому что все, что вы знаете о compared
, это то, что это Object
. Таким образом, это может быть Cat
, у которого нет метода getYear()
, компилятор не может знать.
Следовательно, вы должны привести, что означает "Эй, компилятор, поверь мне, я Знайте, что это на самом деле SimpleDate
, поэтому, пожалуйста, позвольте мне относиться к нему как к одному ". Который, кстати, взломает sh во время выполнения, если на самом деле это не SimpleDate
.
Конечно, вы проверяли, что это на самом деле SimpleDate
раньше, но компилятор недостаточно умен, чтобы соединить точки. Все, что он знает, это то, что compared
имеет тип Object
.