【问题标题】:How to convert Enum in yaml configuration to a class for parsing purpose (See details for more information)?如何将 yaml 配置中的 Enum 转换为类以进行解析(有关详细信息,请参阅详细信息)?
【发布时间】:2022-01-20 21:16:37
【问题描述】:

我有一个看起来像这样的枚举:

public Enum Test {

    val1("firstValue", "secondValue"), val2("firstValue2", "secondValue2");

    private String val1;
    private String val2;

    private Test(String val1, String val2) {
        this.val1 = val1;
        this.val2 = val2;
    }
}

而且,我有一个看起来像这样的配置 YAML 文件:

conf:
  val1: 1.0
  val2: 2.0

对于上面的配置,我定义了一个类来解析这个 YAML,所以它看起来像这样:

public class Config {
    Map<Test, String> conf;
}

现在,我想将此 Test 枚举转换为类。 所以,现在我的枚举看起来像这样:

public class Test {

    private String val1;
    private String val2;

    public Test(String val1, String val2) {
        this.val1 = val1;
        this.val2 = val2;
    }
}

但现在的问题是我的应用程序给出了一个错误,它无法解析配置,因为它期望 Test 但提供了 String

有没有办法可以在不将 Config 类中的 MapMap 更改为 的情况下解决此问题地图?

【问题讨论】:

    标签: java enums yaml dropwizard


    【解决方案1】:

    如果您想保留 YAML 结构,您唯一需要做的就是使用 Test 而不是 Map&lt;Test, String&gt;,如下所示:

    public class Config {
        Test conf;
    }
    

    这当然假设您的第二个 Test 类而不是 Test 作为 Enum

    【讨论】:

      猜你喜欢
      • 2019-06-05
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 2018-06-27
      相关资源
      最近更新 更多