当我创建一个列表时,希望能对其进行初始化。所以我用Arrays.asList。但是,似乎继承不是协变的。

例如,

List<NameValuePair> p = Arrays.asList(new BasicNameValuePair("c", coin), new BasicNameValuePair("mk_type", fromCoin));

不起作用(BasicNameValuePairNameValuePair的派生类)。

照常使用add可以。
List<NameValuePair> pairs = new ArrayList<>();
pairs.add(new BasicNameValuePair("c", coin));
pairs.add(new BasicNameValuePair("mk_type", fromCoin));

由于库API仅接受List<NameValuePair>类型作为其参数,因此我必须以这种方式定义pairs。有什么方法可以优雅地处理此问题吗?

最佳答案

如果我理解您的问题,那么我相信您可以在对Arrays.asList的方法调用中使用explicit1泛型类型,例如

List<NameValuePair> p = Arrays.<NameValuePair>asList(new BasicNameValuePair(
        "c", coin), new BasicNameValuePair("mk_type", fromCoin));

1 Generic Methods (The Java Tutorials)

10-04 14:58