В Java « ClassCastException ” помогает выявлять проблемы совместимости типов во время выполнения, позволяя разработчикам обнаруживать их на ранней стадии разработки. Это также обеспечивает безопасность типов, предотвращая несоответствия в программе. ClassCastException очень помогает в процессе отладки, тестирования, правильного приведения типов и т. д.
В этом руководстве демонстрируется процедура разрешения ClassCastException в Java.
Как ClassCastException возникает в Java?
“ ClassCastException ” обеспечивает правильное приведение типов и предотвращает ошибки во время выполнения, вызванные несовместимыми преобразованиями типов. Проще говоря, это исключение выдается при попытке привести объект к несовместимому типу.
Например, посетите приведенный ниже код о « ClassCastException ” в Java:
Импортировать java.io.* ;
Импортировать Java.яз.* ;
Импортировать Java.util.* ;
сорт LinuxПодсказка {
//Создание класса драйвера
публичный статический пустота основной ( Нить [ ] аргументы )
{
пытаться {
Объект родитель '=' новый Объект ( ) ;
Нить ребенок '=' ( Нить ) родитель ;
Система . вне . печать ( ребенок ) ;
}
ловить ( Исключение ф ) {
Система . вне . печать ( ф ) ;
}
}
}
Объяснение приведенного выше кода:
- В ' пытаться ” блок, экземпляр объекта ” родитель ” объявляется с использованием “ новый ключевое слово.
- После этого используется приведение типов, в котором « объект » тип является типизированным и имеет имя « ребенок ».
- Такое приведение типов нарушает правило, согласно которому родительский класс не должен быть приведен к своему дочернему классу. Вот почему возникает исключение, потому что « объект ” type является родительским классом.
- В итоге « ловить ” используется блок, который принимает “ Исключение ” в качестве параметра и выводит сообщение на консоль.
После окончания фазы исполнения:
На приведенном выше снимке показано появление ClassCastException в Java.
Как разрешить ClassCastException в Java?
Используются три возможных решения, которые разработчик может легко решить или избежать возможности поднять « ClassCastException на Яве.
Эти решения описаны ниже отдельно:
Решение 1. Использование оператора instanceof
“ случай ' оператор проверяет, является ли ' объект ” является экземпляром желаемого типа или нет. Эта проверка помогает предотвратить возникновение « ClassCastException ». Например, посетите приведенный ниже блок кода:
публичный сорт TypeCheckingLinuxHint {публичный статический пустота основной ( Нить [ ] аргументы ) {
Объект родитель '=' «Семейство LinuxHint» ;
если ( родитель случай Нить ) {
Нить ребенок '=' ( Нить ) родитель ;
Система . вне . печать ( 'После приведения типа String: ' + ребенок ) ;
} еще {
Система . вне . печать ( «Объект является экземпляром желаемого типа String». ) ;
}
}
}
Объяснение приведенного выше кода:
- Во-первых, « родитель создается объект, который инициализируется фиктивным значением внутри « пытаться ' блокировать.
- Затем используйте 'если' заявление, в котором « случай » используется для проверки экземпляра « родитель ” объект с желаемым “ Нить ' тип.
- Далее, если условие возвращает « истинный выполняется приведение типов и отображается на консоли.
- В противном случае на консоли отображается пользовательское сообщение об ошибке.
После окончания фазы исполнения:
Снимок показывает, что приведение типов выполнено успешно, и ClassCastException разрешается с помощью « случай оператор.
Решение 2. Проверьте и исправьте операцию приведения типов
Другое решение — многократно проверять код и просматривать совместимые типы для приведения типов. Например, посетите приведенный ниже код, в котором « ClassCastException ” останавливается из-за несовместимости желаемого типа для приведения типов:
публичный сорт TypeCheckLinuxHint {публичный статический пустота основной ( Нить [ ] аргументы ) {
Объект родитель '=' «Семейство LinuxHint» ;
Целое число преобразованное число '=' ( Целое число ) родитель ;
Система . вне . печать ( 'Число после приведения типов: ' + преобразованное число ) ;
}
}
В приведенном выше коде программист неправильно привел « Нить ' к ' Целое число ».
После окончания этапа компиляции:
На приведенном выше снимке показано возникновение ClassCastException.
Решение 3. Использование дженериков
Программисты могут использовать « дженерики », чтобы указать ожидаемые типы и обеспечить безопасность типов во время компиляции.
Например, посетите приведенный ниже код:
Импортировать java.util.ArrayList ;Импортировать java.util.List ;
публичный сорт использованиеGenerics {
публичный статический пустота основной ( Нить [ ] аргументы ) {
Список < Нить > empName '=' новый ArrayList <> ( ) ;
empName. добавлять ( 'Гарри' ) ;
empName. добавлять ( 'Поттер' ) ;
Нить Исходный '=' empName. получать ( 0 ) ;
Нить Финал '=' empName. получать ( 1 ) ;
Система . вне . печать ( 'Имя: ' + Исходный ) ;
Система . вне . печать ( 'Второе имя: ' + Финал ) ;
}
}
Объяснение приведенного выше кода:
- Сначала необходимые утилиты импортируются в файл Java, а класс « использованиеGenerics объявляется ».
- Далее « ArrayList 'типа' Нить ” объявляется с именем “ empName ” и инициализируется предоставлением двух фиктивных элементов данных.
- Затем создайте две переменные типа String с именами « Исходный ' и ' Финал ». После этого назначьте значения, обратившись к порядковым номерам.
- В конце отобразите обе переменные, чтобы увидеть результат.
После окончания выполнения вывод выглядит так:
На приведенном выше снимке показано, что приведение типов было выполнено с использованием дженериков.
Заключение
Чтобы решить « ClassCastException ” в Java программист должен обеспечить надлежащую совместимость типов, использование “ дженерики ” и “ случай оператор. Чтобы устранить исключение, программист должен проверить и исправить операцию приведения, обеспечив надлежащую совместимость типов. Более того, это « ClassCastException ” можно избежать, используя “ дженерики ' и с использованием ' случай оператор. В этом руководстве продемонстрирован метод разрешения ClassCastException в Java.