在 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 模块中)
有什么办法可以实现我想要的行为吗?
请改用以下定义:
Map<String, @WithConverter(FunctionConverter.class) Function> functions();
所以最终我能够通过将 Function 替换为 Map 值的类型(这是我的代码库中的一个接口)和一个实现类来解决这个问题。例如。
Map<String, @WithConverter(FunctionConverter.class) Function> functions();
我标记为已接受@Roberto Cortez 的答案,因为它正在修复我对 @WithConverter 注释所做的用法。