我按照this帖子中的指示为Http GetMethod(http://some.domain/path?param1=value1&param2=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是一个接口,因此它的格式无法使用,并且需要实现。

因此,解决方案是用实现第一个的BasicNameValuePair替换NameValuePair。

但是,我仍然发现此“扩展”有点令人困惑。

最佳答案

Xxx<? extends Yyy>表示Xxx具有通用类型参数,该参数可以是实现接口Yyy(如果Yyy是接口)或扩展类Yyy(如果Yyy是类)时所需的任何类型。 。

10-06 07:16