Как разрешить ClassCastException в Java?

Kak Razresit Classcastexception V Java



В 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.