Switch statements should have a default case

Cette page n'est pas encore disponible en français, sa traduction est en cours.
Si vous avez des questions ou des retours sur notre projet de traduction actuel, n'hésitez pas à nous contacter.

Metadata

ID: java-best-practices/missing-switch-statement-default

Language: Java

Severity: Warning

Category: Best Practices

Description

To improve the understandability your switch statement, it is recommended to make your statements exhaustive by incorporating a default case.

Non-Compliant Code Examples

class Foo {
    public String getValue() {
        int num = 10;
        System.out.println("foobar");
        switch (num) {
            case 1:
                return "One";
            case 2:
                return "Two";
            case 3:
                return "Three";
        }
    }

    public String getValue() {
        int num = 10;
        switch (num) {
            case 1:
                return "One";
            case 2:
                return "Two";
            case 3:
                return "Three";
        }
    }
}
class Foo {
    public String getValue(int num) {
        switch (num) {
            case 1:
                return "One";
            case 2:
                return "Two";
            case 3:
                return "Three";
        }
    }
    public String getValue2(MyType num) {
        switch (num) {
            case 1:
                return "One";
            case 2:
                return "Two";
            case 3:
                return "Three";
        }
    }
}

class Bar {
    public String getValue(int num) {
        if (something) {
            switch (num) {
                case 1: // a comment
                    return "One";
                case 2:
                    return "Two"; // another comment
                case 3:
                    return "Three";
            }
        } else {
            if (somethingElse) {
                switch (num) {
                    case 'j': // a comment
                        return "One";
                    case 2.3:
                        return "Two"; // another comment
                    case 3:
                        return "Three";
                }
            }
        }
        
    }
}

Compliant Code Examples

class Foo {
    public String getValue(int num) {
        switch (num) {
            case 1:
                return "One";
            case 2:
                return "Two";
            case 3:
                return "Three";
            default:
                return "Unknown"
        }
    }
}

class Bar {
    public String getValue(int num) {
        switch (num) {
            case 1: // a comment
                return "One";
            case 2:
                return "Two"; // another comment
            case 3:
                return "Three";
            default:
                return "Unknown"
        }
    }
}

class Bar {
    public String getValue(int num) {
        return switch (num) {
            case 1 -> "one";
            case 2 -> "two";
            default -> "unknown";
        }
    }
}
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis

PREVIEWING: may/add-individual-processors