当我创建一个列表时,我希望能够急切地初始化它;所以我使用了Arrays.asList
。然而,它似乎与继承没有协变性。
例如,
List<NameValuePair> p = Arrays.asList(new BasicNameValuePair("c", coin), new BasicNameValuePair("mk_type", fromCoin));
无效(BasicNameValuePair
是NameValuePair
的派生类)。
虽然可以像往常一样使用add
。
List<NameValuePair> pairs = new ArrayList<>();
pairs.add(new BasicNameValuePair("c", coin));
pairs.add(new BasicNameValuePair("mk_type", fromCoin));
由于库API仅接受List<NameValuePair>
类型作为参数,因此我必须以这种方式定义pairs
。有没有办法优雅地处理这个问题?
答案 0 :(得分:5)
如果我理解你的问题,那么我相信你可以在Arrays.asList
的方法调用中使用明确的 1 泛型类型
List<NameValuePair> p = Arrays.<NameValuePair>asList(new BasicNameValuePair(
"c", coin), new BasicNameValuePair("mk_type", fromCoin));
<子> 1 子> Generic Methods (The Java Tutorials)
答案 1 :(得分:3)
你只需给它一个通用的提示:
List<NameValuePair> p = Arrays.<NameValuePair>asList(new BasicNameValuePair("c", coin), new BasicNameValuePair("mk_type", fromCoin));