1、addConverter方法有几个重载
报错是因为你调用的是这个:
void addConverter(Converter<?, ?> converter);
这个调用的lambda表达式会让产生的转换器无法解析什么是传入类型,什么是目标类型,这就导致无法生效
所以你要用lambda的话你需要用:
<S, T> void addConverter(Class<S> sourceType, Class<T> targetType, Converter<? super S, ? extends T> converter);
其中参数的意思就是传入类型和需要转换成的类型。,还有转换器定义;
2、代码示例:
由于是学习了雷神的课程所以示例差不多哈哈哈!
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(String.class,Pet.class,(source)->{
//阿猫,5
if (source!=null) {
String[] split = source.split(",");
Pet pet = new Pet();
pet.setName(split[0]);
pet.setAge(Integer.parseInt(split[1]));
return pet;
}
return null;
});