Есть ли какие-либо накладные расходы, когда мы бросаем объекты одного типа в другой? Или компилятор просто решает все, и во время выполнения нет затрат?
Это общие вещи или есть разные случаи?
Например, предположим, что у нас есть массив Object [], где каждый элемент может иметь другой тип. Но мы всегда точно знаем, что, например, элемент 0 является двойным, элемент 1 является строкой. (Я знаю, что это неправильный дизайн, но позвольте предположить, что я должен был это сделать.)
Сохраняется ли информация о типе Java во время выполнения? Или все забыто после компиляции, и если мы делаем (Double) элементы [0], мы просто будем следовать указателю и интерпретировать эти 8 байтов как double, что бы это ни было?
Я очень не понимаю, как типы выполняются на Java. Если у вас есть какая-либо рекомендация по книгам или статьям, спасибо также.