У Јави, „ ЦлассЦастЕкцептион ” помаже да се идентификују проблеми са компатибилношћу типова током извршавања, омогућавајући програмерима да их ухвате рано у фази развоја. Такође обезбеђује сигурност типа, спречавајући недоследности у програму. ЦлассЦастЕкцептион много помаже у процесу отклањања грешака, тестирања, исправног преливања типа итд.
Овај водич показује процедуру за решавање ЦлассЦастЕкцептион у Јави.
Како ЦлассЦастЕкцептион настаје у Јави?
„ ЦлассЦастЕкцептион ” обезбеђује правилно пребацивање типа и спречава грешке у току извршавања узроковане конверзијама некомпатибилних типова. Једноставним речима, овај изузетак се ствара када се објекат покуша да се пребаци на некомпатибилан тип.
На пример, посетите доњи код о „ ЦлассЦастЕкцептион ” на Јави:
увоз јава.ио.* ;
увоз јава.ланг.* ;
увоз јава.утил.* ;
класа ЛинукХинт {
//Креирање класе возача
јавности статична празнина главни ( Низ [ ] аргс )
{
покушати {
Објекат родитељ = Нова Објекат ( ) ;
Низ дете = ( Низ ) родитељ ;
Систем . оут . принтлн ( дете ) ;
}
улов ( Изузетак ф ) {
Систем . оут . принтлн ( ф ) ;
}
}
}
Објашњење горњег кода:
- У „ покушати ” блок, инстанца објекта “ родитељ ” се проглашава коришћењем „ Нова ” кључна реч.
- Након тога, користи се куцање у којем се „ објекат ” тип се куца и има име “ дете ”.
- Ово превођење типа крши правило да родитељска класа не сме да буде примењена на своју подређену класу. Зато изузетак настаје јер „ објекат ” тип је родитељска класа.
- На крају, „ улов ” користи се блок који узима “ Изузетак ” као параметар и штампа поруку на конзоли.
Након завршетка фазе извршења:
Горњи снимак показује појаву ЦлассЦастЕкцептион у Јави.
Како решити ЦлассЦастЕкцептион у Јави?
Користе се три могућа решења која програмер може лако да реши или избегне шансу да подигне „ ЦлассЦастЕкцептион ” на Јави.
Ова решења су посебно описана у наставку:
Решење 1: Употреба „инстанцеоф“ оператора
„ инстанцеоф ” оператор проверава да ли је „ објекат ” је инстанца жељеног типа или не. Ова верификација помаже у спречавању појаве „ ЦлассЦастЕкцептион ”. На пример, посетите блок кода испод:
јавности класа ТипеЦхецкингЛинукХинт {јавности статична празнина главни ( Низ [ ] аргс ) {
Објекат родитељ = „ЛинукХинт породица“ ;
ако ( родитељ инстанцеоф Низ ) {
Низ дете = ( Низ ) родитељ ;
Систем . оут . принтлн ( 'Након увођења стринга: ' + дете ) ;
} друго {
Систем . оут . принтлн ( „Објекат је инстанца жељеног типа Стринг.“ ) ;
}
}
}
Објашњење горњег кода:
- Прво, „ родитељ ” креира се објекат који се иницијализује лажном вредношћу унутар „ покушати ' блокирати.
- Затим користите 'ако' изјава у којој је „ инстанцеоф ” оператор се користи за проверу инстанце „ родитељ ” објекат са жељеним “ Низ ' тип.
- Затим, ако се услов врати “ истина ” се врши пребацивање типа и приказује се на конзоли.
- У супротном, прилагођена порука о грешци се приказује на конзоли.
Након завршетка фазе извршења:
Снимак показује да је превођење типа успешно обављено и да је ЦлассЦастЕкцептион решен помоћу „ инстанцеоф ” оператор.
Решење 2: Прегледајте и исправите операцију превођења типа
Друго решење је да проверите код више пута и прегледате компатибилне типове за примену типа. На пример, посетите доњи код у коме је „ ЦлассЦастЕкцептион ” бива ухапшен због некомпатибилног жељеног типа за куцање:
јавности класа ТипеЦхецкЛинукХинт {јавности статична празнина главни ( Низ [ ] аргс ) {
Објекат родитељ = „ЛинукХинт породица“ ;
Интегер цонвертедНумбер = ( Интегер ) родитељ ;
Систем . оут . принтлн ( „Број након увођења типа:“ + цонвертедНумбер ) ;
}
}
У горњем коду, програмер је погрешно бацио „ Низ ' до ' Интегер ”.
Након завршетка фазе компилације:
Горњи снимак показује појаву ЦлассЦастЕкцептион.
Решење 3: Употреба генерика
Програмери могу да користе „ генерички ” да наведете очекиване типове и примените безбедност типова у време компилације.
На пример, посетите код у наставку:
увоз јава.утил.АрраиЛист ;увоз јава.утил.Лист ;
јавности класа усингГенерицс {
јавности статична празнина главни ( Низ [ ] аргс ) {
Листа < Низ > емпНаме = Нова Низ листа <> ( ) ;
емпНаме. додати ( 'Хари' ) ;
емпНаме. додати ( 'Поттер' ) ;
Низ Иницијал = емпНаме. добити ( 0 ) ;
Низ Коначни = емпНаме. добити ( 1 ) ;
Систем . оут . принтлн ( 'Име: ' + Иницијал ) ;
Систем . оут . принтлн ( 'Презиме: ' + Коначни ) ;
}
}
Објашњење горњег кода:
- Прво, потребни услужни програми се увозе у Јава датотеку, а класа „ усингГенерицс ” је проглашено.
- Затим, „ Низ листа ” типа “ Низ ” је декларисано са именом “ емпНаме ” и иницијализовано обезбеђивањем два лажна елемента података.
- Затим креирајте две променљиве типа стринг под називом „ Иницијал ' и ' Коначни ”. Након тога, доделите вредности приступом бројевима индекса.
- На крају, прикажите обе варијабле да бисте видели резултат.
Након завршетка извршавања, излаз изгледа овако:
Горњи снимак илуструје да је превођење типа изведено коришћењем генерика.
Закључак
Да бисте решили „ ЦлассЦастЕкцептион ” у Јави, програмер мора да обезбеди одговарајућу компатибилност типова, коришћење „ генерички ” и „ инстанцеоф ” оператор. Да би решио изузетак, програмер мора да прегледа и исправи операцију ливења тако што ће обезбедити одговарајућу компатибилност типа. Штавише, овај „ ЦлассЦастЕкцептион ” се може избећи коришћењем „ генерички “ и уз употребу „ инстанцеоф ” оператор. Овај водич је демонстрирао метод за решавање ЦлассЦастЕкцептион у Јави.