每个枚举的保存方法

时间:2019-05-20 10:52:32

标签: java methods enums

我创建了一个枚举。现在,我想为每个枚举保存一个方法。这些方法位于不同的类中。我该怎么做? 我的意思是这样的:

public enum FooEnum {

    A(Person::setAge),
    B(Test::setTest);

    private final Function</* What to enter here */, Object> function;

    private FooEnum(final Function</* ... */, Object> function) {
        this.function = function;
    }

    public Function</* ... */, Object> getFunction() {
        return function;
    } 
}

显然,这不会编译。 “人”和“测试”只是一些示例类。

1 个答案:

答案 0 :(得分:2)

您可以使用Function代替Runnable。而且由于枚举是静态常量,因此您还需要定义方法静态:

  public static class Person {
    public static void setAge() {

    }
  }

  public enum FooEnum {

    A(Person::setAge);

    private final Runnable function;

    private FooEnum(Runnable function) {
      this.function = function;
    }

    public Runnable getFunction() {
      return function;
    } 
  }