W Javie „ ClassCastException ” pomaga identyfikować problemy ze zgodnością typów w czasie wykonywania, umożliwiając programistom wykrycie ich na wczesnym etapie rozwoju. Zapewnia również bezpieczeństwo typów, zapobiegając niespójnościom w programie. ClassCastException bardzo pomaga w procesie debugowania, testowania, poprawnego rzutowania typów itp.
W tym przewodniku przedstawiono procedurę rozwiązania wyjątku ClassCastException w Javie.
Jak powstaje wyjątek ClassCastException w Javie?
„ ClassCastException ” zapewnia prawidłowe rzutowanie typów i zapobiega błędom czasu wykonywania spowodowanym niekompatybilnymi konwersjami typów. Mówiąc prościej, ten wyjątek jest zgłaszany, gdy obiekt próbuje zostać rzutowany na niezgodny typ.
Na przykład odwiedź poniższy kod dotyczący „ ClassCastException ” w Javie:
import java.io.* ;
import java.język.* ;
import java.util.* ;
klasa LinuxHint {
//Tworzenie klasy sterownika
publiczny statyczny próżnia główny ( Strunowy [ ] argumenty )
{
próbować {
Obiekt rodzic = nowy Obiekt ( ) ;
Strunowy dziecko = ( Strunowy ) rodzic ;
System . na zewnątrz . println ( dziecko ) ;
}
złapać ( Wyjątek F ) {
System . na zewnątrz . println ( F ) ;
}
}
}
Wyjaśnienie powyższego kodu:
- W ' próbować ” blok, instancja obiektu “ rodzic ” deklaruje się za pomocą „ nowy słowo kluczowe.
- Następnie stosuje się typowanie, w którym „ obiekt ” typ jest rzutowany i ma nazwę „ dziecko ”.
- To rzutowanie na typ narusza zasadę, że klasa nadrzędna nie może być rzutowana na swoją klasę podrzędną. Dlatego powstaje wyjątek, ponieważ „ obiekt ” jest klasą nadrzędną.
- W końcu „ złapać ” używany jest blok, który zajmuje „ Wyjątek ” jako parametr i wypisuje komunikat na konsoli.
Po zakończeniu fazy wykonawczej:
Powyższa migawka pokazuje występowanie wyjątku ClassCastException w Javie.
Jak rozwiązać wyjątek ClassCastException w Javie?
Stosowane są trzy możliwe rozwiązania, które programista może łatwo rozwiązać lub uniknąć szansy na podniesienie „ ClassCastException ” w Jawie.
Rozwiązania te opisano poniżej osobno:
Rozwiązanie 1: Użycie operatora „instanceof”.
„ wystąpienie ” operator sprawdza, czy „ obiekt ” jest instancją żądanego typu lub nie. Ta weryfikacja pomaga zapobiegać występowaniu „ ClassCastException ”. Na przykład odwiedź poniższy blok kodu:
publiczny klasa TypeCheckingLinuxHint {publiczny statyczny próżnia główny ( Strunowy [ ] argumenty ) {
Obiekt rodzic = „Rodzina LinuxHint” ;
Jeśli ( rodzic wystąpienie Strunowy ) {
Strunowy dziecko = ( Strunowy ) rodzic ;
System . na zewnątrz . println ( „Po typowaniu ciągu znaków:” + dziecko ) ;
} w przeciwnym razie {
System . na zewnątrz . println ( „Obiekt jest instancją żądanego typu String”. ) ;
}
}
}
Wyjaśnienie powyższego kodu:
- Po pierwsze ' rodzic ” tworzony jest obiekt, który jest inicjowany wartością fikcyjną wewnątrz „ próbować ' blok.
- Następnie użyj 'Jeśli' oświadczenie, w którym „ wystąpienie Operator ” służy do sprawdzania instancji „ rodzic ” obiekt z pożądanym „ Strunowy ' typ.
- Następnie, jeśli warunek zwróci „ PRAWDA ” rzutowanie jest wykonywane i wyświetlane na konsoli.
- W przeciwnym razie na konsoli zostanie wyświetlony niestandardowy komunikat o błędzie.
Po zakończeniu fazy wykonawczej:
Migawka pokazuje, że rzutowanie typów zostało pomyślnie wykonane, a wyjątek ClassCastException został rozwiązany przy użyciu „ wystąpienie operatora.
Rozwiązanie 2: Przejrzyj i popraw operację rzutowania
Innym rozwiązaniem jest wielokrotne sprawdzanie kodu i przeglądanie zgodnych typów do rzutowania typów. Na przykład odwiedź poniższy kod, w którym „ ClassCastException ” zostaje aresztowany z powodu niezgodności pożądanego typu do rzutowania:
publiczny klasa TypCheckLinuxHint {publiczny statyczny próżnia główny ( Strunowy [ ] argumenty ) {
Obiekt rodzic = „Rodzina LinuxHint” ;
Liczba całkowita przekonwertowana liczba = ( Liczba całkowita ) rodzic ;
System . na zewnątrz . println ( „Liczba po typowaniu:” + przekonwertowana liczba ) ;
}
}
W powyższym kodzie programista błędnie rzucił „ Strunowy ' Do ' Liczba całkowita ”.
Po zakończeniu fazy kompilacji:
Powyższa migawka pokazuje występowanie wyjątku ClassCastException.
Rozwiązanie 3: Stosowanie leków generycznych
Programiści mogą używać „ leki generyczne ”, aby określić oczekiwane typy i wymusić bezpieczeństwo typów w czasie kompilacji.
Na przykład odwiedź poniższy kod:
import java.util.ArrayList ;import java.util.List ;
publiczny klasa przy użyciu Generics {
publiczny statyczny próżnia główny ( Strunowy [ ] argumenty ) {
Lista < Strunowy > nazwa_emp = nowy lista tablic <> ( ) ;
nazwa_emp. dodać ( 'Złupić' ) ;
nazwa_emp. dodać ( 'Garncarz' ) ;
Strunowy Wstępny = nazwa_emp. Dostawać ( 0 ) ;
Strunowy Finał = nazwa_emp. Dostawać ( 1 ) ;
System . na zewnątrz . println ( 'Imię: ' + Wstępny ) ;
System . na zewnątrz . println ( 'Drugie imię: ' + Finał ) ;
}
}
Wyjaśnienie powyższego kodu:
- Najpierw wymagane narzędzia są importowane do pliku Java, a klasa „ przy użyciu Generics ” jest zadeklarowane.
- Następnie „ lista tablic „typu” Strunowy ” jest zadeklarowana z nazwą „ nazwa_emp ” i zainicjowany przez podanie dwóch fikcyjnych elementów danych.
- Następnie utwórz dwie zmienne typu String o nazwie „ Wstępny ' I ' Finał ”. Następnie przypisz wartości, uzyskując dostęp do numerów indeksów.
- Na koniec wyświetl obie zmienne, aby zobaczyć wynik.
Po zakończeniu wykonywania wynik wygląda następująco:
Powyższa migawka ilustruje, że rzutowanie typów zostało wykonane przy użyciu generycznych.
Wniosek
Aby rozwiązać problem „ ClassCastException ” w Javie programista musi zapewnić odpowiednią kompatybilność typów, użycie „ leki generyczne ” i „ wystąpienie operatora. Aby usunąć wyjątek, programista musi przejrzeć i poprawić operację rzutowania, zapewniając odpowiednią zgodność typu. Co więcej, ten „ ClassCastException ” można uniknąć, używając „ leki generyczne ” i za pomocą „ wystąpienie operatora. W tym przewodniku zademonstrowano metodę rozwiązania wyjątku ClassCastException w Javie.