java.lang.ClassCastException на том же самом классе

Исключение java.lang.ClassCastException возникает при попытке приведения объекта к подклассу, экземпляром которого он не является.

Например:

Этот код при выполнении бросит исключение:

Но бывает такая странная ситуация, когда исключение возникает при попытке преобразовать к классу, которым объект собственно и является. Например:

На первый взгляд кажется, что это абсурд. Как это так, что нельзя привести класс к самому себе? Но такая ситуация вполне возможна. Она может возникнуть в случаях, когда у вас есть два одинаковых класса, но загруженных разными ClassLoader -ами. А это возможно, например, при разработке под WEB (J2EE, Spring Framework и т. д.).  У меня такая ситуация возникла в случае, когда jar-ник с драйвером PostgreSQL был подключен два раза: один раз в war-файле, второй раз он был в каталоге lib у Apache Tomcat. По идее драйвер должен лежать в каталоге lib. Но проект начинал свой путь ещё до меня. Я решил в этом случае не использовать org.postgresql.util.PGInterval  напрямую, а использовать Object и обращаться к методам через Reflection.

Получилось примерно вот так:

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *