Tag: 枚举

处理必须子类化的单身人士

在问题中什么是在Java中实现单例模式的有效方法? 最赞成的回答是,使用Enum实现单例。 这很好,我理解论证,分别是语言优势。 但是,我有一组我定义单例但需要扩展其他类的类,这对于枚举方法是不可能的, 因为枚举不能是子类 。 约书亚布洛赫在他的幻灯片中说: 但缺少一件事 – 你无法扩展枚举类型 在大多数情况下,你不应该 一个引人注目的用例操作代码 在大多数情况下你不应该: 有人可以详细说明吗? 我已经实现了几个servlet并扩展了HttpServlet ,为什么这些不应该是单例? 我只想在我的应用程序中使用它们的一个实例。

在Java中嵌套枚举

我想要嵌套一些枚举。 我所代表的对象是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 […]

Dozer String到枚举映射

我有这样的枚举: public enum PartnershipIndicator { VENDOR(“VENDOR”), COPARTNER(“COPARTNER”), BUYER(“BUYER”); String code; private PartnershipIndicator(String code) { this.code = code; } public String getCode() { return code; } public static PartnershipIndicator valueOfCode(String code) { for (PartnershipIndicator status : values()) { if (status.getCode().equals(code)) { return status; } } throw new IllegalArgumentException( “Partnership status cannot be resolved for code ” […]

在使用枚举之前检查有效的枚举值

我正在尝试查找枚举集,知道通常会有一个不匹配的exception抛出:我想在执行查找之前检查值是否存在以避免exception。 我的枚举看起来像这样: public enum Fruit { APPLE(“apple”), ORANGE(“orange”); ; private final String fruitname; Fruit(String fruitname) { this.fruitname = fruitname; } public String fruitname() {return fruitname;} } 我想在尝试使用相关的枚举之前检查“香蕉”是否是我的枚举值之一。 我可以迭代比较我的字符串的允许值 Fruit.values()[i].fruitname 但我希望能够做类似的事情(pseduo-code): if (Fruit.values().contains(myStringHere)) {… 那可能吗? 我应该完全使用其他东西吗(Arrays?Maps?)? 编辑:最后我和NawaMan的建议一起去了,但感谢所有人提供了有用的建议。

根据传入的字符串设置枚举值

我有许多setter方法,它们采用枚举。 这些基于传入对象属性。 而不是写一堆这些是有一种方法来硬编码说10个不同的案例陈述。 有没有办法创建一个可重用的方法? //Side class declared as public final enum Side //How I initialise side static Side side = Side.SELL;//default //method to set object Obj.setSide(sideEnum(zasAlloc.getM_buySellCode())); //How I am implementing it public static Side sideEnum(String buysell) { if(buysell.equalsIgnoreCase(“S”)) { side = Side.SELL; //default } else if(buysell.equalsIgnoreCase(“B”)) { side = Side.BUY; } return side; }

如何通过其属性获取枚举类型?

我写了一个枚举类,我想要按类型获取属性并获取type by属性,但似乎不可能。 public enum AreaCode { area1(7927), area2(7928), area3(7929); private final int ac; AreaCode(int ac) { this.ac = ac; } int areaCode(){ return ac; } AreaCode area(int n) { switch (n) { case 7927: return AreaCode.area1; case 7928: return AreaCode.area2; case 7929: return AreaCode.area3; } } } 上面的代码不会编译。 如何使area(int n)工作?

枚举属性和副作用

我有一个关于枚举的问题(它可能是一个简单的但……)。 这是我的计划: public class Hello { public enum MyEnum { ONE(1), TWO(2); private int value; private MyEnum(int value) { System.out.println(“hello”); this.value = value; } public int getValue() { return value; } } public static void main(String[] args) { MyEnum e = MyEnum.ONE; } } 我的问题是:为什么输出是 hello hello 并不是 hello ? 代码如何“两次”到构造函数? 第一次是什么时候,第二次是什么时候? 为什么枚举构造函数不能公开? 这是它打印两次而不是一次打印的原因吗?

Java如何访问内部枚举类

public class Constant { …… public enum Status { ERROR, WARNING, NORMAL } …… } 编译完成后,我得到了一个名为Constant $ Status.class的类文件。 问题是,如何访问枚举值。 例如,我想获得ERROR状态的字符串表示。

我可以在Java中创建一个抽象枚举吗?

以下是有效的枚举声明。 public enum SomeEnumClass { ONE(1), TWO(2), THREE(3); private int someInt; public SomeEnumClass(int someInt) { this.someInt = someInt; } } 但是我可以用枚举类型覆盖抽象类吗? SomeEnumClass.java public abstract enum SomeEnumClass { private int someInt; public SomeEnumClass(int someInt) { this.someInt = someInt; } } OverridingEnumClass.java public enum OverridingEnumClass extends SomeEnumClass { ONE(1), TWO(2), THREE(3); } 如果没有,为什么不呢? 什么是好的选择?

如何使用枚举与分组和子组层次结构/嵌套

我有一个名为Example enum “类”如下: enum Example { //enums belonging to group A: enumA1, enumA2, enumA3, //enums belonging to group B: enumB1, enumB2, enumB3, //enums belonging to group C: enumC1, enumC2, enumC3; } 对我的项目来说,重要的是我使用的所有枚举都属于Example (因为这是类的构造函数中的参数)。 如何使用enum层次结构/嵌套来实现以下目的: 测试enum是否属于组A,B或C的方法。例如,像Example.enumA1.isGroupBelonging(Group.A)或isGroupBelonging(Example.enumA1,Group.A)这样的isGroupBelonging(Example.enumA1,Group.A)方法将返回true 。 能够对A , B和C组的子组做同样的事情。 例如,组A可能具有子组a , b和c 。 然后我想要一个方法,例如Example.enumA1.isSubGroupBelonging(SubGroup.a) ,它是一个public boolean 。 一种方法来完成所有这些,而不需要一些精心设计的enum名称堵塞我的代码。 例如,能够在我的其他类中引用Example.enumA1而不需要使用像Example.enumA1(Group.A,SubGroup.a)或Example.enumA1.Group.A.SubGroup.a这样的引用它会很好。 Example.enumA1.Group.A.SubGroup.a