在java中,我有一个将JsonProvider.java
扩展为RootlessJsonProvider.java
的类,它允许类在没有根元素的情况下使用JSON。
我试图覆盖仍然使用与实现它的类完全相同的方法签名定义的方法readFrom
:
@Override
public Object readFrom(final Class<Object> type, final Type genericType,
final Annotation[] anns, final MediaType mtype,
final MultivaluedMap<String, String> headers,
final InputStream inputStream) {
InputStream inputStreamNew = null;
if (type != null) {
final XmlRootElement rootElement = type
.getAnnotation(XmlRootElement.class);
if (rootElement != null) {
inputStreamNew = transformStreamForDropRootElement(rootElement,
inputStream);
}
}
return super.readFrom(type, genericType, anns, mtype,
headers, inputStreamNew);
}
但所有改变的是实现,以允许无根json使用。
随附的错误是:
The method readFrom(Class<Object>, Type, Annotation[], MediaType, MultivaluedMap<String,String>, InputStream) of type RootlessJsonProvider has the same erasure as readFrom(Class, Type, Annotation[], MediaType, MultivaluedMap, InputStream) of type MessageBodyReader but does not override it
更改方法名称也不起作用,因为它的使用不在实施中。
即
JsonProvider rootlessProvier = new RootlessJsonProvder();
rootlessProvider.rootlessReadFrom(....); //ERROR <---- this method doesn't exist as it's not defined in JsonProvider.java
根据此方法的使用情况,没有任何参数类型不太通用,那么如何解决此错误呢?
编辑:
JsonProvider.java
cxf-jaxrs版本3.1.5的一部分
答案 0 :(得分:1)
功能签名是
class JsonProvider<T> {
T readFrom(Class<T> ...) {
}
}
您需要正确扩展课程。
class RootlessJsonProvider extends JsonProvider<SomeClassOfOurs> {
@Override
SomeClassOfOurs readFrom(Class<SomeClassOfOurs> ...) {
}
}
JsonProvider<SomeClassOfOurs> rootlessProvider = new RootlessJsonProvider(...);
或者,
class RootlessJsonProvider<T> extends JsonProvider<T> {
@Override
T readFrom(Class<T> ...) {
}
}
JsonProvider<SomeClassOfOurs> rootlessProvider = new RootlessJsonProvider<>(...);