在Java中使用Arrays.asList的协方差?

Hon*_*hen 4 java types list

当我创建一个列表时,我希望能够急切地初始化它; 所以我用过Arrays.asList.然而,它似乎与继承没有协变性.

例如,

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

不起作用(BasicNameValuePair是派生类NameValuePair).

虽然可以add照常使用.

List<NameValuePair> pairs = new ArrayList<>();
pairs.add(new BasicNameValuePair("c", coin));
pairs.add(new BasicNameValuePair("mk_type", fromCoin));
Run Code Online (Sandbox Code Playgroud)

由于库API只接受List<NameValuePair>type作为其参数,我必须以pairs这种方式定义.有没有办法优雅地处理这个问题?

Ell*_*sch 5

如果我理解你的问题,那么我相信你可以使用一个明确1种在方法调用泛型类型来Arrays.asList喜欢

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

1通用方法(Java教程)