我创建了一个枚举。现在,我想为每个枚举保存一个方法。这些方法位于不同的类中。我该怎么做? 我的意思是这样的:
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;
}
}
显然,这不会编译。 “人”和“测试”只是一些示例类。
答案 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;
}
}