枚举由Java中的枚举

时间:2016-07-18 11:08:37

标签: java enums

我在Java中创建了enum,其中enum的每个元素引用了另一个enum。我还实现了一个getter,它将返回引用的实例。我会说,没有什么奇怪或错误的。与通常的enum实现的唯一区别是使用另一个enum作为支持值。我不使用int或任何其他原始类型。

然后我尝试以相同的方式实现其他enum并使用第一个enum作为其元素的支持值。代码编译得很好,在我几次调用getter之前没有任何错误。

在下面的JUnit测试中自行查看。断言在最后一行失败。

为什么会失败?

import static org.junit.Assert.assertNotNull;
import org.junit.Test;

enum EN {
    DOG(CS.PES),
    CAT(CS.KOCKA);

    CS v;

    EN(CS v) {
        this.v = v;
    }

    public CS getCS() {
        return this.v;
    }
}

enum CS {
    PES(EN.DOG),
    KOCKA(EN.CAT);

    EN v;

    CS(EN v) {
        this.v = v;
    }

    public EN getEN() {
        return this.v;
    }
}

public class EnumTest {

    @Test
    public void testValueOfEnum() {
        String zvire = "PES";
        CS pes = CS.valueOf(zvire);
        assertNotNull(pes);
        assertNotNull(pes.getEN()); // OK
        assertNotNull(pes.getEN().getCS()); // FAIL -- getCS() is null
    }
}

0 个答案:

没有答案