public class SearchResult { private List resultSet; }
2
2
私はWebサービスに精通しています。 このようなバリューホルダーとしてジェネリッククラスを作成しました。
public class SearchResult { private List resultSet; }
次に、Webサービスメソッドを記述します。
public SearchResult getSearchResult(){ ... }
クライアントファイルを生成するためにmaven-jaxws-pluginを使用していたときに、ジェネリック型情報がなくなっていることがわかりました。 彼らは次のように見えました:
public class SearchResult { private List resultSet; } public SearchResult getSearchResult(){ ... }
ここでの私の質問は、jaxwsはそのような種類の一般的な型情報を保持できるのかということです。 Listを戻り値の型として試しましたが、動作します。 ご協力ありがとうございます。
3 回答
2
1
クライアントコードがソース以外を使用して生成された場合、一般的な情報は含まれない可能性があります。 ジェネリックスを使用するコードがコンパイルされると、ジェネリックに関する情報はhttp://java.sun.com/docs/books/tutorial/java/generics/erasure.html[type erasure]により失われます。
1
@ XmlTransient`と
@ XmlElement`を使用します
汎用の結果クラスを抽象化し、resultListを `@ XmlTransient`およびprotectedにします。
public abstract class SearchResult { protected List content; @XmlTransient public abstract List getContent(); public abstract void setContent(List content); }
次に、サブクラスを作成し、ゲッターで `@ Xmlelement`を使用します。
public class BookResult extends SearchResult { private static final long serialVersionUID = 1L; @Override @XmlElement public List getContent() { return content; } @Override public void setContent(List content) { this.content = content; } }