这句话怎么了?
$hello = "world";
$myFunc = function($str) use($hello) {
return compact($str);
};
print_r($myFunc('hello'));
它显示出无法像这样将private final HashMap<String, SortedMap<Long, Long>> abc;
abc = new HashMap<String, TreeMap<Long, Long>>;
转换为SortedMap
的错误?我如何做到这一点?
答案 0 :(得分:1)
如果您确实希望能够以这种方式进行分配,那么可以使用绑定? extends SortedMap
的通配符。例如:
private final Map<String, ? extends SortedMap<Long, Long>> abc;
...
abc = new HashMap<String, TreeMap<Long, Long>>();
也就是说,您在创建新的外部hashmap实例时不必指定嵌套的地图类型。只需将其保留为SortedMap
。稍后,当您插入值时,它可以是新的TreeMap
实例,因为它们实现了SortedMap
。例如
private final Map<String, SortedMap<Long, Long>> abc;
...
abc = new HashMap<String, SortedMap<Long, Long>>();
abc.put("Test", new TreeMap<Long, Long>());
在缩短此代码以进行类型推断后,分配行可能如下所示:
abc = new HashMap<>();
abc.put("Test", new TreeMap<>());
答案 1 :(得分:-1)
您尚未初始化HashMap
。实例化新对象时,请记住使用构造函数。
import java.util.*;
public class MyClass {
public static void main(String args[]) {
HashMap<String,SortedMap<Long,Long>> abc;
abc = new HashMap<>();
}
}