Tag: 枚举

避免在Java中重复导入:inheritance导入?

有没有办法“inheritance”import? 例: 常用枚举: public enum Constant{ ONE, TWO, THREE } 使用此枚举的基类: public class Base { protected void register(Constant c, String t) { … } } 需要导入的子类才能方便地使用枚举常量(没有枚举名称): import static Constant.*; // want to avoid this line! public Sub extends Base { public Sub() { register(TWO, “blabla”); // without import: Constant.TWO } } 和另一个具有相同导入的类…… import static Constant.*; […]

是否有Java 7中的ImmutableEnumSet计划?

我想拥有EnumSet的所有效率并传递它,而不必担心有人会修改它。

如何启用枚举inheritance

我正在编写一个库,它具有一组预定义的枚举值。 比方说,我的枚举如下所示。 public enum EnumClass { FIRST(“first”), SECOND(“second”), THIRD(“third”); private String httpMethodType; } 现在,使用此库的客户端可能需要添加更多值。 假设客户端需要添加CUSTOM_FIRST和CUSTOM_SECOND 。 这不会覆盖任何现有值,但会使枚举具有5个值。 在此之后,我应该可以使用 有5种不变的可能性。 实现这一目标的最佳方法是什么?

从Enum中获取值仅在运行时获知

我需要从枚举中获取所有值,其类型仅在运行时才知道。 我想出了以下内容,但想知道是否有人知道更好的方法: enum TestEnum { FOO, BAR } Enum[] getValuesForEnum(Class type) { try { Method m = type.getMethod(“values”); return (Enum[])m.invoke(null); } catch (Exception e) { throw new RuntimeException(e); } } Class testEnum = Class.forName(“TestEnum”); getValuesForEnum(testEnum); 谢谢!

Java Enum toString()方法

我有几个使用下划线来分隔单词的Java枚举。 在我的每个枚举中,我都有一个toString方法,它实现为super.toString()。replace(“_”,“”),这样我就可以在没有下划线的GUI上显示字符串值。 有没有什么方法可以让我的所有枚举使用这个toString方法,而不是在所有这些方法中重复它? 如果这是一个常规类,答案很简单,实现toString()然后让我所有需要该实现的类扩展该类,但枚举不能扩展任何东西,甚至不能扩展枚举。 public enum Example1 { HELLO_WORLD, HELLO_EARTH, HELLO_GLOBE @Override public String toString() { return super.toString().replace(“_”, ” “); } } public enum Example2 { ANSWER_1, ANSWER_2, ANSWER_3 @Override public String toString() { return super.toString().replace(“_”, ” “); } } 有没有人有一个解决方案,不会跨所有枚举复制此toString()方法?

为什么Java类库仍然使用String常量代替枚举

我正在使用一些Java类,如javax.Mail.Session和MessageDigest用于我正在构建的工具。 我注意到很难为它们分配属性,因为它们正在使用String常量。 例如,对于Session对象,您必须在Property实例中分配String键值对,然后用于创建Session 。 因此,如果您希望会话记录调试消息,请在Property实例中指定”smtp.mail.debug” , “true” 。 同样,如果您希望MessageDigest使用SHA ,请将MessageDigest实例创建为MessageDigest.getInstance(“SHA”) 如果我想使用MD5 / RC4等实现MessageDigest ,或者向Session对象添加另一个属性,我还没弄清楚要做什么以及从哪里获取信息。 如果公共枚举被这些各自的类公开以分配属性,那会不会更好? 至少可以为程序员节省大量的搜索时间。

枚举,用于开关盒

我有一个Enum定义,它包含方法返回类型,如“String”,Float,List,Double等。 我将在switch case语句中使用它。 例如,我的枚举是 public enum MethodType { DOUBLE,LIST,STRING,ARRAYLIST,FLOAT,LONG; } 在属性文件中,我的键值对如下。 Test1 = String Test2 = Double 在我的代码中,我得到了密钥的值。 我需要在Switch Case中使用VALUE来确定类型,并基于此我要实现一些逻辑。 例如像这样的东西 switch(MethodType.DOUBLE){ case DOUBLE: //Dobule logic } 有人可以帮我实现吗?

使用枚举实现实用程序类和单例

Peter Lawrey撰写了大多数人在他的博客上遗忘的两个Enums of Enums 。 首先,我没有忘记 – 我甚至没有意识到:) 这些方法简洁明了 – 与更传统的实现相同方法的方法相比,除了简洁之外还有什么好处,比如使用带有private构造函数的final类来实用类? 此外,是否有任何问题(除了令人困惑的程序员不期待它)?

枚举Java中正则表达式的可能匹配项

我想在Java中枚举有限正则表达式的所有可能值以用于测试目的。 对于某些上下文,我有一个正则表达式,我用它来匹配单词中允许的颜色值。 这是一个缩短版本的例子: (white|black)|((light|dark) )?(red|green|blue|gray) 我想创建一个unit testing,它将枚举所有这些值并将它们传递给我的实用程序类,该实用程序类从这些中生成一个Color对象,这样,如果我更改正则表达式,我的unit testing将在发生错误时失败(即新颜色值不受支持)。 当然,我知道枚举是可能的( 参见这个问题 ),但是现有的Java库是否会枚举正则表达式的所有可能的匹配? 编辑:我已经实现了一个执行此操作的库。 请参阅下面的答案以获取链接。

在这种情况下使用适合的嵌套枚举?

我需要支持许多ChartTypes 。 这些图表类型中的每一种都可以支持许多ChartSubTypes 。 例如, AreaChart类型可以有PercentArea , StackedArea等。我正在考虑为SubTypes和SubTypes使用Enum,然后在某处维护一个类似于以下内容的地图: Map<ChartType,List mapTypes; 我可以在这里以某种方式使用嵌套的枚举模式吗? 如果是,那怎么样?