Короткий ответ: вы не можете привести к int
к String
, поскольку String
не является родительским или дочерним классом int
.Приведение говорит о том, как вы просматриваете объект в разных связанных классах.
Что вы действительно спрашиваете (я думаю), почему Java не автоматически конвертирует между типами для вас?
Ответ и причина, по которой вы не можете это сделать functionThatRequiresString(x)
, заключается в том, что Java является типобезопасным и настаивает на том, чтобы вы передавали значения правильного типа в методы.Преимущество этого в том, что вам не сложно найти ошибки, когда вы передаете неправильный тип функции, но она автоматически преобразуется в правильный тип, так что вы кодируете компиляцию, но при запуске работаете очень странно.Недостатком, как вы видели, является то, что это менее удобно, когда вы хотите выполнить преобразование.
Причина, по которой можно делать что-то вроде "" + x
, заключается в том, что это такая распространенная операция, что компилятор обрабатывает все преобразования за вас.Поскольку вы явно создаете строку здесь, безопасно выполнить преобразование.