Java >> Java tutorial >  >> Tag >> return

Java Manglende returerklæring

1. Oversigt

I denne vejledning ser vi på en almindelig fejl i Java-udviklingsprocessen. Normalt står begyndere over for dette problem, den manglende returneringsfejl i Java-applikationen.

Den manglende returneringsfejl er en kompileringsfejl . Det kastes under kompileringsfasen. Moderne IDE'er fnug denne fejl på farten. Derfor plejer denne type fejl at være let at opdage.

De vigtigste årsager er:

  • en returerklæring blev simpelthen udeladt ved en fejl
  • metoden returnerer ikke nogen værdi, men typen void er ikke erklæret i metodesignaturen

2. Manglende returerklæring

Først skal vi se et par eksempler. Disse eksempler er relateret til returopgørelsen, der er udeladt ved en fejl. Derefter leder vi efter et eksempel på den manglende void-type i metodesignaturen. Hvert eksempel viser, hvordan vi kan løse fejlen i java missing return statement.

2.1. Udeladt returerklæring

Lad os derefter definere en simpel pow metode:

public int pow(int number) {
    int pow = number * number;
}

Som et resultat af at kompilere den forrige kode får vi:

java: missing return statement

For at løse dette problem tilføjer vi blot en returerklæring efter pow variabel:

public int pow(int number) {
    int pow = number * number;
    return pow;
}

Derfor, hvis vi kalder metoden pow, vi får det forventede resultat.

På samme måde, men med betingede strukturer, opstår denne fejl:

public static String checkNumber(int number) {
    if (number == 0) {
        return "It's equals to zero";
    }
    for (int i = 0; i < number; i++) {
        if (i > 100) {
            return "It's a big number";
        }
    }
}

Ovenstående kode kontrollerer et inputnummer. Sammenlign først inputtallet med 0. Hvis betingelsen er sand, returneres en strengværdi. Så, hvis tallet er større end 0, finder vi en for-løkke med en indre betingelse. Vores betingede erklæring inde i for-loop er opfyldt, hvis "i ” er større end 100. Men hvad med et negativt inputtal?. Ja, du har ret. Vi savner en standard returopgørelse. Derfor, hvis vi kompilerer vores kode, får vi java:missing return statement fejl igen.

Så for at rette op på det, skal vi blot sætte en standard returerklæring i slutningen af ​​metoden:

public static String checkNumber(int number) {
    if (number == 0) {
        return "It's equals to zero";
    }
    for (int i = 0; i < number; i++) {
        if (i > 100) {
            return "It's a big number";
        }
    }
    return "It's a negative number";
}

2.2. Manglende retur i Lambdas

Desuden kan denne fejl opstå, når vi arbejder med lambdaer. For funktioner kan det være lidt vanskeligt at opdage denne fejl. kortet metode i streams er et almindeligt sted, hvor denne fejl opstår. Lad os inspicere vores kode:

public Map<String, Integer> createDictionary() {
    List<String> words = Arrays.asList("Hello", "World");
    Map<String, Integer> dictionary = new HashMap<>();
    words.stream().map(s -> {dictionary.put(s, 1);});
    return dictionary;
}

Den forrige kode ser fin ud. Der er en returopgørelse. Vores returdatatype er lig med metodesignaturen. Men hvad med koden inde i kortet metode i strømmen?. kortet metoden forventer en funktion som argumentet. I dette tilfælde lægger vi kun data ind i vores ordbog inde i kortmetoden. Som et resultat, hvis vi forsøger at kompilere denne kode, får vi java:missing return statement fejl igen.

Dernæst erstatter vi kortet for at løse fejlen med forEach metode i strømmen:

words.forEach(s -> {dictionary.put(s, 1);});

Eller returner et kort direkte fra strømmen:

dictionary = words.stream().collect(Collectors.toMap(s -> s, s -> 1))

2.3. Manglende metodesignatur

Endelig er det sidste tilfælde, da vi savnede at tilføje en returtype til vores metodesignatur. Når vi forsøger at kompilere vores metode, får vi derfor en fejl. Følgende kodeeksempel viser os denne adfærd:

public pow(int number) {
    int pow = number * number;
    return pow;
}

Vi glemte at tilføje int som returtype. Hvis vi føjer det til vores metode, vil signaturen rette denne fejl:

public int pow(int number) {
    int pow = number * number;
    return pow;
}

3. Konklusion

I denne artikel har vi gennemgået nogle eksempler på manglende returopgørelser. Hvordan det kan vises i vores kode, og hvordan vi kan rette det. Dette er nyttigt for at undgå fremtidige fejl i vores kode og måske et par minutters kodeinspektion.

Som sædvanlig er alle uddrag, der bruges i denne artikel, tilgængelige på GitHub.


Java tag