java - 每个枚举的保存方法

标签 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;
    } 
}

显然这不会编译。 “Person”和“Test”只是一些示例类。

最佳答案

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

  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;
    } 
  }

关于java - 每个枚举的保存方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56219424/

相关文章:

java - 将自定义类导入 Android 项目时出现构造函数不可见错误

java - Android - 使用后退按钮关闭主 Activity ~ 错误 II

java - 如何在 J2ME 中解析 URL

java - 如何在一个循环中找到数组中所有对之间的最大差异

c++ - 当 enum 有重复值时,如果将 int 值转换为 enum 会发生什么?

Java8 : Create HashMap with character count of a String

objective-c - float dashPattern[] = {10, 5};

go - 如何调用 golang struct 字段的函数?

C++:如何检查枚举只有唯一值

c++ - 尝试在 C++ 中使用枚举制作剪刀石头布程序