Switch statements should have a default case

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: safchain/fix-custom-agent