使用Config Converter转换Map值

问题描述 投票:0回答:2

在 quarkus 扩展中,我有如下所示的配置,即将属性映射到 Java 映射,并且我正在尝试使用自定义转换器转换映射值。

` @ConfigMapping(prefix = "my.prefix")

公共接口 MyConfig {

@WithConverter(FunctionConverter.class)
Map<String, Function> functions();

} `

这在构建时失败并出现错误:

java: java.lang.ClassCastException: 类 com.sun.tools.javac.code.Type$ArrayType 无法转换为类 javax.lang.model.type.DeclaredType (com.sun.tools.javac.code.Type$ ArrayType 位于 loader 'app' 的 jdk.compiler 模块中;javax.lang.model.type.DeclaredType 位于 loader 'platform' 的 java.compiler 模块中)

有什么办法可以实现我想要的行为吗?

converters quarkus
2个回答
0
投票

请改用以下定义:

Map<String,  @WithConverter(FunctionConverter.class) Function> functions();

0
投票

所以最终我能够通过将 Function 替换为 Map 值的类型(这是我的代码库中的一个接口)和一个实现类来解决这个问题。例如。

Map<String,  @WithConverter(FunctionConverter.class) Function> functions();
我标记为已接受@Roberto Cortez 的答案,因为它正在修复我对 @WithConverter 注释所做的用法。

© www.soinside.com 2019 - 2024. All rights reserved.