[英]How to use generic method parameters in Map.Entry?
我想创建一个采用Map.Entry
的通用List
的方法。 键应始终为String
类型,其值可以为任何值。
然后,我想提供以下条目:
public void test() {
List<Map.Entry<String, String>> strings;
apply(strings);
List<Map.Entry<String, Integer>> integers;
apply(integers);
}
private void apply(List<Map.Entry<String, ?>> entry) {
}
private void apply(List<Map.Entry<String, Object>> entry) {
}
但是:这两个apply()
方法都不在这里起作用。 旁注:我无法更改条目的类型。 表示<String, String>
和<String, Integer>
必须保持原样。
如何将它们纳入通用Apply方法?
使apply
方法通用:
private <T> void apply(List<Map.Entry<String, T>> entry) {
}
请注意,根据您希望在apply
正文中执行的操作,使用private void apply(List<? extends Map.Entry<String, ?>> entry)
签名可能不够。
例如,如果您希望将列表中一个条目的值更改为另一条目的值。
以下内容不会通过编译:
private void apply(List<? extends Map.Entry<String, ?>> entry) {
entry.get(1).setValue (entry.get(0).getValue());
}
但这将:
private <T> void apply(List<Map.Entry<String,T>> entry) {
entry.get(1).setValue (entry.get(0).getValue());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.