一个带有enum的java方法类

Mik*_*erg 3 java oop enums

我有一个看起来像的枚举

public enum MyEnum
{
  myValue
  {
    @Override
    public String myMethod(String dostuff)
    {
      return dostuff + "One";
    }
  },
  myOtherValue
  {
    @Override
    public String myMethod(String dostuff)
    {
      return dostuff + "Two";
    }
  },
  aThirdValue
  {
    @Override
    public String myMethod(String dostuff)
    {
      return dostuff + "Three";
    }
  };

  public abstract String myMethod(String dostuff);
}
Run Code Online (Sandbox Code Playgroud)

现在我想我们都同意这看起来很糟糕?但是更好的方式是什么?我可以有一个abstractfactory,但后来我需要三个实现类,每个实现类作为一行方法.不要觉得这么漂亮.我可以使用开关(在代码或枚举中).但后来我忘了添加一个案例.

那么,最后的路是什么?必须有一个模式,但似乎找不到一个.到目前为止,最好的香港专业教育学院提出的意见是添加评论自动崩溃Netbeans中的方法,也不是那么精彩.

Aar*_*lla 8

解决方案是为枚举创建一个私有构造函数:

public enum MyEnum
{
  myValue("One"), myOtherValue("Two"), aThirdValue("Three");

  private String value;

  private MyEnum(String value) { this.value = value; }

  public String myMethod(String dostuff)
  {
    return dostuff + value;
  }
}
Run Code Online (Sandbox Code Playgroud)

[编辑]请注意,您可以传递更复杂的内容.例如,您可以传入一个实现某个接口的类(比如说Work有一个方法doWork()).这样,您可以在枚举中存储方法调用以执行不同类型的工作.

查看命令模式策略模式.