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

Kak Da Razresite Classcastexception V Java



В Java, „ ClassCastException ” помага за идентифициране на проблеми със съвместимостта на типа по време на изпълнение, като позволява на разработчиците да ги уловят рано във фазата на разработка. Той също така гарантира безопасност на типа, предотвратявайки несъответствия в програмата. ClassCastException помага много в процеса на отстраняване на грешки, тестване, правилно кастинг на типове и т.н.

Това ръководство демонстрира процедурата за разрешаване на ClassCastException в Java.







Как ClassCastException възниква в Java?

ClassCastException ” осигурява правилно преобразуване на типове и предотвратява грешки по време на изпълнение, причинени от несъвместими преобразувания на типове. Казано по-просто, това изключение се хвърля, когато даден обект се опита да бъде преобразуван към несъвместим тип.



Например посетете кода по-долу за „ ClassCastException ” в Java:



импортиране java.io.* ;
импортиране java.lang.* ;
импортиране java.util.* ;

клас LinuxHint {
//Създаване на клас драйвер
публичен статичен невалиден основен ( низ [ ] аргументи )
{
опитвам {
Обект родител = нов Обект ( ) ;

низ дете = ( низ ) родител ;
Система . навън . println ( дете ) ;
}
улов ( Изключение f ) {
Система . навън . println ( f ) ;
}
}
}

Обяснение на горния код:





  • в „ опитвам ' блок, екземплярът на обект ' родител ” се декларира чрез използване на „ нов ” ключова дума.
  • След това се използва преобразуване на типове, при което „ обект типът е типизиран и има име на „ дете ”.
  • Това преобразуване на типове нарушава правилото, че родителският клас не трябва да се пренасочва към неговия дъщерен клас. Ето защо възниква изключението, защото „ обект ” е родителски клас.
  • В крайна сметка „ улов ” използва се блок, който взема „ Изключение ” като параметър и отпечатва съобщение на конзолата.

След края на фазата на изпълнение:



Горната моментна снимка показва появата на ClassCastException в Java.

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

Използват се три възможни решения, които разработчикът може лесно да разреши или да избегне шанса да повиши „ ClassCastException ” в Java.

Тези решения са описани по-долу отделно:

Решение 1: Използване на оператор „instanceof“.

instanceof ” проверява дали „ обект ” е екземпляр от желания тип или не. Тази проверка помага за предотвратяване на появата на „ ClassCastException ”. Например посетете кодовия блок по-долу:

публичен клас TypeCheckingLinuxHint {
публичен статичен невалиден основен ( низ [ ] аргументи ) {

Обект родител = „Семейство LinuxHint“ ;
ако ( родител instanceof низ ) {
низ дете = ( низ ) родител ;
Система . навън . println ( 'След преобразуване на низ: ' + дете ) ;
} друго {
Система . навън . println ( „Обектът е екземпляр от желания тип String.“ ) ;
}
}
}

Обяснение на горния код:

  • Първо, „ родител ' се създава обект, който се инициализира с фиктивна стойност вътре в ' опитвам ” блок.
  • След това използвайте 'ако' изявление, в което „ instanceof ' се използва за проверка на екземпляра на ' родител ' обект с желано ' низ ' Тип.
  • След това, ако условието се върне „ вярно ” преобразуването на типове се извършва и се показва на конзолата.
  • В противен случай персонализираното съобщение за грешка се показва на конзолата.

След края на фазата на изпълнение:

Моментната снимка показва, че преобразуването на типове е извършено успешно и ClassCastException е разрешено с помощта на „ instanceof ' оператор.

Решение 2: Преглед и коригиране на операцията за преобразуване на типове

Друго решение е да проверите кода няколко пъти и да прегледате съвместимите типове за типове. Например посетете кода по-долу, в който „ ClassCastException ” се арестува поради несъвместим желан тип за преобразуване на типа:

публичен клас TypeCheckLinuxHint {
публичен статичен невалиден основен ( низ [ ] аргументи ) {
Обект родител = „Семейство LinuxHint“ ;
Цяло число преобразуваноЧисло = ( Цяло число ) родител ;
Система . навън . println ( „Число след преобразуване на типа:“ + преобразуваноЧисло ) ;
}
}

В горния код програмистът неправилно е прехвърлил „ низ ' да се ' Цяло число ”.

След края на фазата на компилация:

Горната моментна снимка показва появата на ClassCastException.

Решение 3: Използване на генерични лекарства

Програмистите могат да използват „ генерични лекарства ”, за да посочите очакваните типове и да наложите безопасността на типа по време на компилация.

Например посетете кода по-долу:

импортиране java.util.ArrayList ;
импортиране java.util.List ;

публичен клас с помощта на Generics {
публичен статичен невалиден основен ( низ [ ] аргументи ) {
списък < низ > empName = нов ArrayList <> ( ) ;
empName. добавете ( 'Хари' ) ;
empName. добавете ( 'Потър' ) ;

низ Първоначално = empName. получавам ( 0 ) ;
низ Финал = empName. получавам ( 1 ) ;

Система . навън . println ( 'Първо име: ' + Първоначално ) ;
Система . навън . println ( 'Второ име: ' + Финал ) ;
}
}

Обяснение на горния код:

  • Първо, необходимите помощни програми се импортират в Java файла и се създава клас „ с помощта на Generics “ се декларира.
  • След това „ ArrayList 'от тип' низ ” се декларира с името „ empName ” и се инициализира чрез предоставяне на два фиктивни елемента от данни.
  • След това създайте две променливи от тип String с име ' Първоначално ' и ' Финал ”. След това задайте стойности чрез достъп до индексните номера.
  • Накрая покажете и двете променливи, за да видите резултата.

След края на изпълнението изходът изглежда така:

Горната моментна снимка илюстрира, че преобразуването на типове е извършено с помощта на генерични кодове.

Заключение

За разрешаване на „ ClassCastException ” в Java, програмистът трябва да осигури подходяща съвместимост на типа, използване на „ генерични лекарства “ и „ instanceof ' оператор. За да разреши изключението, програмистът трябва да прегледа и коригира операцията за кастинг, като осигури подходяща съвместимост на типа. Освен това този „ ClassCastException ' може да се избегне чрез използване на ' генерични лекарства ' и с помощта на ' instanceof ' оператор. Това ръководство демонстрира метода за разрешаване на ClassCastException в Java.