有没有办法实例化lazy的值map?
例如
class MapTest {
@Lazy(soft = true) HashMap<String, List<String>> map
}
Run Code Online (Sandbox Code Playgroud)
这样做我可以使用这个电话并null在没有收到的情况下得到NullPointerException
new MapTest().map.key1
Run Code Online (Sandbox Code Playgroud)
然而尝试打电话
map.key1.remove(1)
Run Code Online (Sandbox Code Playgroud)
将导致NullPointerException应有的value存在null。IndexOutOfBounds(如果抛出异常就好了)
有没有办法实例化list地图的值?
尝试map.withDefault:
def map = [:].withDefault { [] }
assert map.key1.isEmpty()
Run Code Online (Sandbox Code Playgroud)
一些解释:
withDefault是地图上一个带有闭包的常规方法。每次请求一个键来初始化该值(如果该值不存在)时,都会调用此闭包。该闭包采用一个参数(键)并且该值应该在这里查看其他例子