В 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
Там нет никаких параметров, основываясь на том, как этот метод используется, что меньше общего типа, так как я могу решить эту ошибку?
Edit:
JsonProvider.java
часть версии CxF-jaxrs 3.1.5
Глядя на [ 'JsonProvider'] (http://docs.oracle.com/javaee/7/api/javax/json/spi/JsonProvider.html), Я не вижу никакого метода readFrom (...) 'для переопределения. В какой библиотеке вы используете? – AJNeufeld
CXF-JAXRS: пакет org.apache.cxf.jaxrs.provider. Версия 3.1.5 –
Любая причина, по которой вы не сохранили параметр типа generic для класса? Я считаю, что если вам это не понадобится, то первый параметр становится 'Class type' not' Class