Привет.
Правильно ли я понимаю, что с compile-time чекингом, например, в java, на рантайме не проверяется тип константы, когда она берется из пула?
В этом же смысл компайл-тайм чекинга. Но если, предположим будет статический каст или что-то такое, то будет SegFault и всё полетит.
Если подсунуть байт-код, где в констант пуле будет int вместо double, а в коде написать double, то все сломается?
Я бы предположил, что скорее это вызовет ошибку верификации при загрузке класса, и привет. Плохой байткод верификатор не должен пропустить к исполнению в VM, что освобождает остальную реализацию VM от необходимости проверок на каждый чих. Не всегда и не везде, но в подавляющем большинстве случаев.