在Java中嵌套枚举
发布时间:2020-12-14 05:08:48 所属栏目:Java 来源:网络整理
导读:我想嵌套一些枚举.我所代表的对象是Flags,具有类型和值.有一些离散的类型,每种类型都有一组不同的可能值. 所以如果类型A可以具有值1,2或3,而类型B可以具有值4,5,6,我想要能够做如下事情: Flag f = Flag.A.1;f.getType() - returns "A"f.getValue() - return
我想嵌套一些枚举.我所代表的对象是Flags,具有类型和值.有一些离散的类型,每种类型都有一组不同的可能值.
所以如果类型A可以具有值1,2或3,而类型B可以具有值4,5,6,我想要能够做如下事情: Flag f = Flag.A.1; f.getType() - returns "A" f.getValue() - returns "1" Flag f2 = Flag.A.4; -- Syntax error. 我正在疯狂地尝试在枚举中嵌套枚举 – 我正在尝试的可能性 – 我需要完整的枚举枚举,并用静态成员手工制作一个静态类吗? 我迄今所做的最大努力是: public class Flag { enum A extends Flag { ONE("ONE"),TWO("TWO"),THREE("THREE"); private A(String value) { Flag.type = "A"; Flag.value = value; } } private static String type; private static String value; } 但如果我这样做: Flag f = Flag.A.ONE; 类型不兼容. 解决方法
你不能有一个数字作为枚举.它必须是一个标识符.
你可以这样做 interface Flag { String getType(); int getValue(); enum A implements Flag{ one,two,three; String getType() { return getClass().getSimpleName(); } int getvalue() { return ordinal()+1; } } enum B implements Flag{ four,five,six; String getType() { return getClass().getSimpleName(); } int getvalue() { return ordinal()+4; } } } Flag f = Flag.A.one; 然而,更简单的选择可能是 enum Flag { A1,A2,A3,B4,B5,B6; public String getType() { return name().substring(0,1); } public int getValue() { return name().charAt(1) - '0'; } } Flag f = Flag.A1; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容