Tag: 枚举

Java枚举是否有增量运算符++?

是否可以为枚举实现++运算符? 我用枚举处理状态机的当前状态,能够使用++运算符会很好。

在Enum中从类初始化一个新对象

我有一个名为插件的枚举: public enum Plugins { ROTATING_LINE (plugin.rotatingline.RotatingLine.class), SNOW_SYSTEM (plugin.snow.SnowSystem.class); private Class c; private Plugins (Class c) { this.c = c; } public Class getClassObject() { return c; } } 我想要做的是遍历Plugins所有枚举,并使用变量c创建新对象,如下所示: for (Plugins plugins : Plugins.values()) { Class c = plugins.getClassObject(); pluginList.add(new c(400, 400)); } 有没有办法用类似的方法完成这个? 我想这样做的原因是创建一个类列表,当我启动我的应用程序时应该添加到List插件。

exception处理模式

这是我看到的常见模式,其中与exception关联的错误代码存储为静态最终整数。 当创建要抛出的exception时,它将使用这些代码之一以及错误消息构造。 这导致该方法要抓住它必须查看代码然后决定一个行动方案。 替代似乎是 – 为每个exception错误情况声明一个类(虽然相关exception将从一个公共基类中解除) 有中间地带吗? 推荐的方法是什么?

如何随机化枚举元素?

假设你有一些包含一些元素的enum public enum LightColor { RED, YELLOW, GREEN } 并想随意挑选任何颜色。 我把颜色放进去了 public List lightColorChoices = new ArrayList(); lightColorChoices.add(LightColor.GREEN); lightColorChoices.add(LightColor.YELLOW); lightColorChoices.add(LightColor.RED); 然后选择一个随机颜色: this.lightColor = lightColorChoices.get((int) (Math.random() * 3)); 所有这些(虽然工作正常)似乎不必要地复杂化。 是否有更简单的方法来选择随机枚举元素?

如何重新实现枚举的值

我需要重新实现我的一些枚举的enum.valueof方法,这样它们就不再抛出exception,而是如果枚举中不存在值,它们只返回null。 我正在尝试基本的 @Override public static <T extends Enum> T valueOf(Class enumType, String name){ 但它不起作用,说我需要覆盖或实现超类型。 我想我可以拿出一个超级class,但我不知道怎么把它放在一起。 有任何想法吗?

在Scala中创建Java Enum

我的工作场所一直在尝试从Java迁移到Scala执行某些任务,并且它适用于我们正在做的事情。 但是,一些预先存在的日志记录方法需要java.lang.Enum 。 日志记录方法在(Java)基类中定义,子类可以定义自己的枚举,记录器将跟踪多个线程/机器中的所有实例。 它在Java中的工作原理如下: public class JavaSubClass extends JavaBaseClass { enum Counters { BAD_THING, GOOD_THING } public void someDistributedTask() { // some work here if(terribleThing) { loggingMethod(Counters.BAD_THING) } else { loggingMethod(Counters.GOOD_THING) // more work here } } } 然后,当任务完成后,我们可以看到 BAD_THING: 230 GOOD_THING: 10345 有没有办法在Scala中复制它,通过创建Java Enum或从Enumeration转换为Enum ? 我试过直接扩展Enum ,但似乎是密封的,因为我在控制台中收到错误: error: constructor Enum in class Enum […]

如何检查java.lang.reflect.Type是否为Enum

我想检查java.lang.reflect.Type实例是否表示Emum对象。 我可以使用==比较来检查它是否是特定类的实例,例如: type == String.class // works 但这似乎不适用于Enum类: type == Enum.class // doesn’t work …这是有道理的,因为实例将是一个特定的枚举,但我想检查该类型是否适用于任何枚举。 有人可以向我解释如何判断Type是否是枚举请

枚举中的特殊字符

我想把特殊字符,括号(’(’和’)’)和撇号(’)放在枚举中。 我有这个: private enum specialChars{ “(“, “)”, “‘” } 但它不起作用。 Java说了一些关于无效令牌的事情。 我怎么解决这个问题? Grtz me.eatCookie();

java enum变量是静态的吗?

public enum Operations { SINGLE, MULTIPLE; private Type operation; public void setOperation(Type operation) { this.operation = operation; } public Type getOperation() { return operation; } public static void main(String[] args) { Operations oper1 = Operations.SINGLE; oper1.setOperation(Type.GET); Operations oper2 = Operations.SINGLE; oper2.setOperation(Type.POST); System.out.println(oper1.getOperation()); System.out.println(oper2.getOperation()); } } enum Type { POST, GET; } 在上面的代码中,两个操作的操作值都会发生变化。 如何使用不同操作类型的两个Operations.SINGLE实例?

在Java中扩展枚举

我有一个枚举,让我们称之为A: public enum A { A, B } 我有一个枚举A的函数: public void functionA(A enumA) { //do something } 如何创建另一个枚举,可能调用B我可以传递给functionA ? 像这样的东西? public enum B { C } functionA(BC); 我知道你不能扩展枚举,但我还有其他选择吗? 实现这一目标的最佳方法是什么?