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
[ '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 –
クラスのジェネリック型パラメータを保持していない理由は何ですか?私はあなたがそれを必要としない場合、最初のパラメータは 'クラス