有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java抱怨在开关的默认情况下未初始化最终字段

我想用不同的方式初始化最后一个字段。因此,我创建了一个枚举类型,并对其进行了切换

    public enum TYPE {
        A,
        B,
    }

我还向开关添加了一个默认情况,并用一个断言警告我的程序员同事,以防他们添加新的枚举常量和 忘记更新开关了

        default:
            assert false : "missing TYPE detected";

java却检测到了我的论点中的缺陷,并抱怨空白字段可能没有初始化。我该如何处理这种情况

public class SwitchExample
{
    public enum TYPE {
        A,
        B,
    }

    private final int foo;

    public SwitchExample(TYPE t)
    {
        switch (t) {
        case A:
            foo = 11;
            break;

        case B:
            foo = 22;
            break;

        default:
            assert false : "missing TYPE detected";
        }

        // The blank final field foo may not have been initialized
    }
}

共 (2) 个答案

  1. # 1 楼答案

    您可以将default之后的代码更改为以下内容:

    assert (foo = 0) > 0 : "missing TYPE detected";