Switch statements should have a default case

This page is not yet available in Spanish. We are working on its translation.
If you have any questions or feedback about our current translation project, feel free to reach out to us!

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: rtrieu/product-analytics-ui-changes