我想创建一个采用通用 List
的方法的Map.Entry
的。 key 应始终为 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());
}
关于java - 如何在Map.Entry中使用泛型方法参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48560717/