Как разрешить исключения класса Cast в Java?
Неизвестное нежелательное событие, которое нарушило нормальный ход программы, называется исключением. В большинстве случаев исключения вызваны нашей программой, и их можно исправить. Пример: если наша программа требует чтения данных из удаленного файла, находящегося в США, во время выполнения, если удаленный файл недоступен, мы получим исключение RuntimeException с сообщением fileNotFoundException. Если возникает исключение fileNotFoundException, мы можем предоставить программе локальный файл для чтения и продолжения остальной части программы в обычном режиме.
В Java есть в основном два типа исключений:
1. Проверяемое исключение: исключение, которое проверяется компилятором на предмет плавного выполнения программы во время выполнения, называется проверенным исключением. В нашей программе, если есть вероятность появления проверенных исключений, мы должны обязательно обработать это проверенное исключение (либо с помощью ключевого слова try-catch, либо с помощью ключевого слова throws), иначе мы получим ошибку времени компиляции.
Примеры проверенных исключений: classNotFoundException, IOException, SQLException и т. Д.
2. Непроверенное исключение: исключения, которые не проверяются компилятором, независимо от того, обрабатывает ли программист такой тип исключения или нет, называются непроверенным исключением.
Примеры непроверенных исключений: ArithmeticException, ArrayStoreException и т. Д.
Независимо от того, отмечено ли исключение или нет, каждое исключение возникает во время выполнения только в том случае, если нет возможности возникновения какого-либо исключения во время компиляции.
ClassCastException: это дочерний класс RuntimeException и, следовательно, это непроверенное исключение. Это исключение автоматически возникает JVM всякий раз, когда мы пытаемся неправильно привести тип класса из одного типа в другой, то есть когда мы пытаемся преобразовать тип родительского объекта в дочерний тип или когда мы пытаемся преобразовать тип объекта в подкласс, которым он не является пример.
В приведенной ниже программе мы создаем объект o типа Object и приводим тип этого объекта o к объекту String s. Поскольку мы знаем, что класс Object является родительским классом для всех классов в java, и поскольку мы пытаемся привести тип родительского объекта к его дочернему типу, в конечном итоге мы получаем java.lang.ClassCastException
Ява
// import required pacakages import java.io.*; import java.lang.*; import java.util.*; // driver class class geeks { // main method public static void main(String[] args) { try { // creating an object Object o = new Object(); // type casting the object o to string which // give the classcasted exception because we // type cast an parent type to its child type. String s = (String)o; System.out.println(s); } catch (Exception e) { System.out.println(e); } } } |
java.lang.ClassCastException: класс java.lang.Object не может быть преобразован в класс java.lang.String (java.lang.Object и java.lang.String находятся в модуле java.base загрузчика bootstrap)
Чтобы иметь дело с ClassCastException, будьте осторожны, когда вы пытаетесь преобразовать тип объекта класса в другой класс, убедитесь, что новый тип принадлежит одному из его родительских классов, или не пытайтесь преобразовать тип родительского объекта в его дочерний тип. При использовании коллекций мы можем предотвратить исключение ClassCastException с помощью универсальных шаблонов, поскольку универсальные шаблоны обеспечивают проверку во время компиляции.
Ниже представлена реализация постановки задачи:
Ява
// import required pacakages import java.io.*; import java.lang.*; import java.util.*; // driver class class geeks { // main method public static void main(String[] args) { try { // creating an object String s = "GFG" ; Object o = (Object)s; // Object class is parent class of every class // Hence exception doesn't occur. System.out.println(o); } catch (Exception e) { System.out.println(e); } } } |
GFG
Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .