直接在枚举中使用 Wicket 属性

Use Wicket properties in Enums directly

我有一个如下所示的枚举:

package de.test;

public enum TestEnum {
    bar("Test");

    private final String label;

    private TestEnum(String labelName) {
        this.label = labelName;
    }

    public String getLabel() {
        return label;
    }
}

我想将字符串 "Test" 存储在 Java 属性文件中。枚举 "TestEnum" 应该存储属性键,它的 "getLabel" 方法应该在属性文件中查找适当的值,return 这个值。

package de.test;

public enum TestEnum {
    bar("test.key");

    private final String label;

    private TestEnum(String labelKey) {
       this.label = labelKey;
    }

    public String getLabel() {
        // Look up properties value with label as key in the according properties file
        String labelValue = ...
        return labelValue;
    }
}

我有一个如下所示的属性文件:

test.key=Test

这个问题的背景是:我有一个 Wicket 组件,假设有一个标签,标签的值存储在这个枚举中。但是枚举不应该保存使用过的字符串,而应该只保存属性文件的键。 return Wicket 组件的属性键和让组件在适当的属性文件中查找值的解决方案在我的情况下并不实用。

我使用 Wicket 6.17 和 Java 8.

感谢提示。

编辑:这个问题的意图: 在此上下文中使用枚举归因于可能无法更改的旧架构。另一方面,有人要求不允许此枚举保存标签的具体字符串,因为 GUI 中使用的所有字符串都必须导出到属性文件中。

我的另一个意图是了解是否有可能使枚举使用属性文件,也许在 Wicket 框架的帮助下。

我#getLabel()做Application.get ().getLocalizer ().getString(key).

P.S。对于错误的格式。我在我的移动设备中。

private TestEnum(String labelKey) {
       this.label = KinfOfPropertyLoader(labelKey); // probably static
    }

但是有多少 "items" 有您的列表?枚举具有常量值集 ("items"),通常很小。 GUI 的列表越来越大。

如果我做对了,您想将枚举变量传递给 Label 并让标签获取枚举值的 i18n 值吗?

TestEnum somevar = TestEnum.bar;
add(new Label("label", somevar));

查看 EnumLabel class 并覆盖它的 getResource 方法:

@Override
protected String resourceKey(TestEnum value) {
    return value.getValue();
}

它将使用枚举值来确定要使用的 属性 键。