Mapping – dozer, instantiationexception on custom converter
•
Java
I wrote my own customer converter:
public class MyFancyCustomConverter extends DozerConverter<Integer,AnObject> { public MyFancyCustomConverter(Class<Integer> prototypeA,Class<AnObject> prototypeB) { super(prototypeA,prototypeB); } @Override public AnObject convertTo(Integer source,AnObject destination) { // TODO: do something return null; } @Override public Integer convertFrom(AnObject source,Integer destination) { // TODO: do something return 0; } }
My mapping xml:
<mapping> <class-a>java.lang.Integer</class-a> <class-b>xyz.AnObject</class-b> <field custom-converter="xyz.MyFancyCustomConverter" custom-converter-param="hello"> <a>this</a> <b key="my.key">this</b> </field> </mapping>
But I got this exception:
org. dozer. MappingException:java. lang.InstantiationException:xyz. MyFancyCustomConverter
You know what I did wrong? I think this is because myfancycustomconverter has no default converter But I can't add one because dozerconverter doesn't
Solution
public MyFancyCustomConverter(Class<Integer> prototypeA,Class<AnObject> prototypeB)
public MyFancyCustomConverter(Class<Integer> prototypeA,Class<AnObject> prototypeB) { super(prototypeA,prototypeB); }
should
public MyFancyCustomConverter() { super(Integer.class,AnObject.class); }
The superclass needs to know the runtime types of these two classes, and a type tag needs to be passed in due to type erasure
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码