我正在使用一些无法编辑的组件,我的情况是这样
private enum Radio {
SPACE(" "),PLUS("+"),MINUS("-");
private String value;
private Radio(final String value) {
this.value = value;
}
public static void setSelection(final CodeEntry entry,final String flag) {
entry.getButtonWhite().setSelection(flag.equals(SPACE.value));
entry.getButtonGreen().setSelection(flag.equals(PLUS.value));
entry.getButtonRed().setSelection(flag.equals(MINUS.value));
}
}
我不喜欢这样。我想将按钮与枚举关联。至少可以说,其他任何方面都不及。但是我不知道
private enum Radio {
SPACE(" ",CodeEntry::getButtonWhite),PLUS("+",CodeEntry::getButtonGreen),MINUS("-",CodeEntry::getButtonRed);
...
static reference to the non-static method getButtonWhite()
我想要的是一种accept(T t)
的东西。因此,我将getter用作构造函数参数,然后使用enum.accept(t)
在对象上调用该getter,如下所示:
private enum Radio {
SPACE(" ",CodeEntry::getButtonRed);
setSelection(final CodeEntry entry,final String flag) {
// Button button = Radio.valueOf(flag).accept(entry);
// button.setSelection(true);
Radio.valueOf(flag).accept(entry).setSelection(true);
}
我不确定这是否可行,而且语法有点让我失望。
我的示例的局限性
尽管我喜欢任何可行的答案,但以下几点却无法更改,因此我只接受带有以下内容的答案:
-
标志是字符串,无论如何都将是字符串。
-
条目将具有getButtonX,不会更改。
-
我正在使用不会更改的Java 8。
-
我想将getter与枚举关联,它必须是构造函数参数。