ParamConverterProvider方法返回类型不匹配 [英] ParamConverterProvider method return type mismatch
本文介绍了ParamConverterProvider方法返回类型不匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在下面的代码片段中,我在Provider
类中继续收到以下错误.
In the below code snippet I keep receiving the following error in the Provider
class.
类型不匹配:无法从DemoParamConverter转换为 ParamConverter
Type mismatch: cannot convert from DemoParamConverter to ParamConverter
package com.ofss.shop.application.translators;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import javax.ws.rs.ext.ParamConverter;
import javax.ws.rs.ext.Provider;
@Provider
public class DemoParamConverterProvider {
private final DemoParamConverter dpc = new DemoParamConverter();
public <T> ParamConverter<T> getConverter(Class<T> rawType,
Type genericType, Annotation[] annotations) {
return dpc;
}
}
package com.ofss.shop.application.translators;
import javax.ws.rs.ext.ParamConverter;
import com.restfully.shop.domain.JavaConversionTarget;
public class DemoParamConverter implements ParamConverter<JavaConversionTarget> {
@Override
public JavaConversionTarget fromString(String value) {
JavaConversionTarget jct = new JavaConversionTarget();
jct.setJctName(value);
return jct;
}
@Override
public String toString(JavaConversionTarget value) {
return value.toString();
}
}
public class JavaConversionTarget {
private String jctName;
/**
* @return the jctName
*/
public String getJctName() {
return jctName;
}
/**
* @param jctName the jctName to set
*/
public void setJctName(String jctName) {
this.jctName = jctName;
}
@Override
public String toString() {
return "JavaConversionTarget-toString with jctName"+ jctName;
}
}
我正在使用Eclipse Kepler,JDK1.7,Jersey2.4.
推荐答案
我遇到了同样的问题,最后返回了一个匿名ParamConverter
:
I got the same problem and ended up by returning an anonymous ParamConverter
:
@Provider
public class MyConverterProvider implements ParamConverterProvider {
@Override
public <T> ParamConverter<T> getConverter(final Class<T> rawType, final Type genericType,
final Annotation[] annotations) {
if (rawType.getName().equals(MyBean.class.getName())) {
return new ParamConverter<T>() {
@Override
public T fromString(String value) {
MyBean myBean = new MyBean();
myBean.setValue(value);
return rawType.cast(myBean);
}
@Override
public String toString(T myBean) {
if (myBean == null) {
return null;
}
return myBean.toString();
}
};
}
return null;
}
}
I pushed an example here if that helps.
这篇关于ParamConverterProvider方法返回类型不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文