1

この投稿の指示に従って、Http GetMethod ( http://some.domain/path?param1=value1¶m2=value2 ) のパラメーター化された URI を作成していますが、新しい問題に遭遇しました。

私はこのコードを持っています:

List<NameValuePair> params = new ArrayList<NameValuePair>();
...
some code which does: params.add(new BasicNameValuePair(paramName, paramValue));
...
String paramString = URLEncodedUtils.format(params, "utf-8");

ただし、私のEclipseは、URLEncodeUtils.formatはタイプを受け入れずList<NameValuePair>List<? extends NameValuePair>.

これは、サブクラスのみが受け入れられることを意味する可能性があると考えました (NameValuePair は抽象的ではないため、意味がありません) が、これもうまくいきませんでした:

class NameValuePairExtension extends NameValuePair{}
List<NameValuePairExtension> params = new ArrayList<NameValuePairExtension>();

これは正確にはどういう意味ですか?

編集:

迅速な返信ありがとうございます。

理論的な回答の一部として、「実用的な解決策」を見つけました。 NameValuePair はインターフェイスであるため、フォーマットはそれで動作せず、実装が必要です。

したがって、解決策は、NameValuePair を、最初のものを実装する BasicNameValuePair に置き換えることです。

ただし、この「拡張」はまだ少し混乱しています。

4

2 に答える 2

2

Xxx<? extends Yyy>は、インターフェイスを実装する(インターフェイスの場合) またはクラスを拡張する(クラスの場合)Xxxときに、必要なジェネリック型パラメーターを持つことを意味します。YyyYyyYyyYyy

于 2011-08-31T10:32:14.137 に答える
2

これは、拡張する(またはである)のリストであることを意味しますが、どの型かはわかりませんし、気にしません。NameValuePair NameValuePair

これは、Java ジェネリックのワイルドカードです。詳細については、Java Generics FAQを参照してください。

NameValuePair編集:間違ったタイプを使用していると思います。正確なコンパイルエラーを投稿してください。より明確になる可能性があります...

于 2011-08-31T10:32:27.433 に答える