Это вопрос интервью.
Интервью закончилось, но этот вопрос все еще на уме.
Я не могу спросить интервьюера, так как я не получил работу.
Сценарий:
- поместить объект класса C1 в кеш с ключом "a"
Более поздний код:
C1 c1FromCache = (C1) cache.get("a");
Этот код генерирует исключение ClassCastException.
В чем могут быть причины?
Я сказал, потому что кто-то добавил другой объект с тем же ключом и так перезаписал его. Мне сказали, нет, подумайте о других возможностях.
Я сказал, что, возможно, jar, определяющий класс C1, не был доступен на этом node (не уверен, что это приведет к классу cast или ClassNotFoundException, но теперь я хватался за какое-либо руководство. Тогда я сказал, что, возможно, неправильная версия класс? Они сказали, что один и тот же jar класса C1 присутствует во всех узлах).
Изменить/Добавить Отвечено на вопрос, выбрал ли get класс ClassCast, но ему сказали, что нет. после этого я сказал ему, что мои действия по разрешению такой проблемы состоят в том, чтобы упасть в тестовый jsp, который имитирует действия и улучшит протоколирование (трассировку стека) после исключения. это была вторая часть вопроса (почему и что бы вы сделали, если это произошло на производстве)
Есть ли у кого-нибудь еще какие-либо идеи о том, почему кеш-код приведет к проблеме броска?