Java Concept Of The Day

Elérhetetlen kód :

Minden utasításnak minden java programban elérhetőnek kell lennie, azaz minden utasításnak legalább egyszer végrehajthatónak kell lennie a lehetséges folyamatok bármelyikében. Ha valamelyik kód nem végrehajtható a lehetséges áramlások egyikében sem, akkor azt elérhetetlen kódnak nevezzük. Az elérhetetlen kód java-ban fordítási idejű hiba.

Nézzük meg a következő példát. Próbálja meg lefordítani ezt a példát.

public class UnreachableCodeInJava{void UnreachableCode_method(boolean b){if(b){return;}else{return;}System.out.println("Unreachable Statement"); //Compile Time Error : Unreachable Code}}

Ebben a példában a 14. sor fordítási idő hibát ad : Elérhetetlen kód. Mivel ez az utasítás nem érhető el egyik áramlásban sem. Ha a boolean “b” igaz, akkor az if blokk végrehajtásra kerül és a vezérlés visszakerül. Ha a boolean “b” hamis, akkor az else blokk végrehajtásra kerül és a vezérlés visszakerül. Tehát mindkét áramlásban a vezérlés nem érkezik a 14. sorba. Az elérhetetlen marad. Ezért fordítási hibát ad.

Nézzük meg ezt a példát.

public class UnreachableCodeInJava{void UnreachableCode_method(boolean b){System.out.println("Reachable Statement");return;System.out.println("Unreachable Statement"); //Compile Time Error}}

Ebben a példában az UnreachableCode_method() csak egy folyamattal rendelkezik. Csak ebben az áramlásban minden utasítást legalább egyszer végre kell hajtani. De a vezérlés csak a második utasításnál tér vissza. Így a harmadik utasítás elérhetetlenné válik.

Halt kód :

A halott kód is elérhetetlen kód, de a halott kód nem ad fordítási idő hibát. Csak figyelmeztetést ad.
Például,

public class UnreachableCodeInJava{void UnreachableCode_method(boolean b){System.out.println("Reachable Statement");if(true){return;}System.out.println("Unreachable Statement"); //Dead Code}}

A fenti példában az if blokk mindig végrehajtásra kerül, mivel “true” konstans értéket adunk át neki. Így a 12. sor elérhetetlenné válik. Bár a fordító nem fog panaszkodni emiatt. Csak egy figyelmeztetést ad, hogy ez egy halott kód.

Végezzen egy kis módosítást a fenti példán.Cserélje ki az if blokkot while blokkal.Fordítsa le, és nézze meg, mi történik.

public class UnreachableCodeInJava{static void UnreachableCode_method(boolean b){System.out.println("Reachable Statement");while(true){return;}System.out.println("Unreachable Statement"); //Compile Time Error}}

Ez a példa fordítási idő hibát ad : Elérhetetlen kód. De miért? Miért gondolja meg magát a fordító, amikor meglátja a while blokkot? Miért nem panaszkodik az elérhetetlen kódra az if blokk után?

Ez azért van, mert,Az elérhetetlen kód szabályai a különböző blokkokra, mint a konstruktorok, metódusok, try, catch, if, for, while stb. külön-külön vannak meghatározva a Java nyelvi specifikációban. A Java nyelvi specifikáció szerint, Az If blokk feltételes kifejezése nem kerül kiértékelésre a fordítási időben, hogy eldöntse az elérhetetlen kódot. Ezért nem fog fordítási idejű hibát kapni az if blokk esetében. Az elérhetetlen kód szabályait itt ellenőrizheti:

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.